๐Ÿงฉ Algorithm/[BOJ] Bronze

BOJ 5073๋ฒˆ : ์‚ผ๊ฐํ˜•๊ณผ ์„ธ ๋ณ€ (Python/๊ตฌํ˜„/Bronze 3)

devCloud 2024. 3. 6. 15:30
728x90
 

5073๋ฒˆ: ์‚ผ๊ฐํ˜•๊ณผ ์„ธ ๋ณ€

๊ฐ ์ž…๋ ฅ์— ๋งž๋Š” ๊ฒฐ๊ณผ (Equilateral, Isosceles, Scalene, Invalid) ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

www.acmicpc.net


์„ค๋ช…

์‚ผ๊ฐํ˜• ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ
- Equilateral :  ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ๊ฒฝ์šฐ
- Isosceles : ๋‘ ๋ณ€์˜ ๊ธธ์ด๋งŒ ๊ฐ™์€ ๊ฒฝ์šฐ
- Scalene : ์„ธ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅธ ๊ฒฝ์šฐ
์‚ผ๊ฐํ˜• ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ "Invalid"๋ฅผ ์ถœ๋ ฅ(๊ฐ€์žฅ ๊ธด ๋ณ€์˜ ๊ธธ์ด๋ณด๋‹ค ๋‚˜๋จธ์ง€ ๋‘ ๋ณ€์˜ ๊ธธ์ด์˜ ํ•ฉ์ด ๊ธธ์ง€ ์•Š์œผ๋ฉด)

 

ํ’€์ด

1. while ๋ฌธ์œผ๋กœ ์ž…๋ ฅ๊ฐ’๊ณผ ์ถœ๋ ฅ์„ ๋ฐ˜๋ณต

2. ์ž…๋ ฅ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•œ ํ›„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

 

์กฐ๊ฑด๋ฌธ

1. ์ž…๋ ฅ๊ฐ’์ด ๋ชจ๋‘ 0์ด๋ฉด ๋ฐ˜๋ณต๋ฌธ ์ค‘๋‹จ

2. ์ฒซ ๋ฒˆ์งธ ๊ฐ’์ด ๋‘ ๋ฒˆ์งธ์™€ ์„ธ ๋ฒˆ์งธ ๊ธธ์ด๋ฅผ ํ•ฉํ•œ ๊ฒƒ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ์‚ผ๊ฐํ˜• ์กฐ๊ฑด์— ๋งž์ง€ ์•Š์œผ๋ฏ€๋กœ 'Invalid' ์ถœ๋ ฅ

3. ์ฒซ ๋ฒˆ์งธ ๊ฐ’, ๋‘ ๋ฒˆ์งธ ๊ฐ’, ์„ธ ๋ฒˆ์งธ ๊ฐ’์ด ๋ชจ๋‘ ๊ฐ™๋‹ค๋ฉด ' Equilateral' ์ถœ๋ ฅ

  • ์‚ผ๊ฐํ˜• ์กฐ๊ฑด์— ๋ถ€ํ•ฉ

4. ๋‘ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๊ฒŒ ์žˆ๋‹ค๋ฉด 'Isosceles' ์ถœ๋ ฅ

  • ์‚ผ๊ฐํ˜• ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋‚˜ ๊ฐ™์€ ๊ฐ’์ด 2๊ฐœ๋งŒ ์žˆ์Œ

5. ์œ„์˜ ์กฐ๊ฑด์ด ๋ชจ๋‘ ํ•ด๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด 'Scalene' ์ถœ๋ ฅ

  • ์‚ผ๊ฐํ˜• ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋‚˜ ๊ฐ™์€ ๊ฐ’์ด ์—†๋‹ค.

 

Solution

import sys
input = sys.stdin.readline

while True:
    num = sorted(list(map(int, input().split())), reverse=True)
    if num[0] == 0 and num[1] == 0 and num[2] == 0:
        break
    if num[0] >= num[1] + num[2]: #๋“ฑํ˜ธ ์•ˆ ๋ถ™์—ฌ์ค˜์„œ ๊ณ„์† ์˜ค๋ฅ˜
            print('Invalid')
    elif num[0] == num[1] == num[2]:
        print('Equilateral')
    elif num[0] == num[1] or num[1] == num[2] or num[2] == num[0]: #๋ฐ˜๋ก€ 1 1 2 ๋‹ต : Invalid 
        print('Isosceles')
    else:
        print('Scalene')

 


๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

1์‹œ๊ฐ„ ํ’€์ด๋ฅผ ํ–ˆ์ง€๋งŒ ์ œ์ถœ ์‹คํŒจ๋ฅผ ํ•˜์—ฌ ๊ฒฐ๊ตญ ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ๋ณด์•˜๋‹ค. ๊ณ„์† ํ‹€๋ฆฐ ์ด์œ ๋Š” ์กฐ๊ฑด๋ฌธ์„ ์œ„ ์ฝ”๋“œ์™€ ๋ฐ˜๋Œ€๋กœ ์ ์—ˆ๋˜ ํƒ“์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์‚ผ๊ฐํ˜• ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋งจ ๋ฐ‘์— ์ ์–ด๋ฒ„๋ฆฌ๋‹ˆ๊น ์ค‘๊ฐ„์— ์ถ”๊ฐ€๋กœ ๋˜ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•˜๋Š” ์˜ˆ์™ธ๊ฐ€ ๋์—†์ด ์ƒ๊ฒผ๋‹ค. ใ… ใ…  ๋ธŒ๋ก ์ฆˆ ๋ฌธ์ œ์˜€๋Š”๋ฐ๋„ ํ’€์ง€ ๋ชปํ•ด์„œ ์„œ๋Ÿฝ๋‹ค..

 

ํ‹€๋ฆฐ ์ฝ”๋“œ

    if num[0] == 0 and num[1] == 0 and num[2] == 0:
        break
    if num[0] == num[1] == num[2]:
        print('Equilateral')
    elif num[0] == num[1]:  # ๋ฐ˜๋ก€ 2 1 1 ๋‹ต : Invalid -> ์‚ผ๊ฐํ˜• ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ๊ฐ’์ด ๋„์ถœ
        print('Isosceles')
    else:
        if num[0] >= num[1] + num[2]:  # ๋“ฑํ˜ธ ์•ˆ ๋ถ™์—ฌ์ค˜์„œ ๊ณ„์† ์˜ค๋ฅ˜
            print('Invalid')
        elif num[0] != num[1] != num[2]:
            print('Scalene')

๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ์ ์„ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค.

 

์ด๋ฒˆ์— ๋ฐฐ์› ๋˜ ๊ฑด ๋ชจ๋“  ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋Š” ๊ฑธ ์กฐ๊ฑด๋ฌธ ๊ฐ€์žฅ ์œ—์ชฝ์— ์ ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ!

728x90