https://www.acmicpc.net/problem/5073
⌨️ 입력
각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다.
🖥️ 출력
정삼각형일 경우 Equilateral,
이등변삼각형일 경우 Isosceles,
모두 다를 경우 Scalene,
될 수 없는 경우 Invalid를 출력한다.
💡 아이디어
우선 삼각형이 될 수 없는 경우를 필터링한다.
3개의 숫자를 상호비교하고, 같을 경우 cnt에 1씩 더한다.
🧑🏻💻 코드
while True:
arr = list(map(int, input().split()))
# 종료 조건
if sum(arr) == 0:
break
res = None
cnt = 0
# 배열 순환
for i in range(len(arr)):
# 두 변의 합이 나머지 한 변보다 짧으면 삼각형이 될 수 없다.
if arr[i-1] + arr[i-2] <= arr[i]:
res = 'Invalid'
break
# j를 활용해서 역순으로 크기 비교
# (1, 0), (2, 0), (2, 1) 순으로 빈틈없이 비교하게 된다
for j in range(i):
if arr[i] == arr[j]:
cnt += 1
if not res:
if cnt == 0:
res = 'Scalene'
elif cnt == 3:
res = 'Equilateral'
else:
res = 'Isosceles'
print(res)
💬 소감
근 10개월만에 다시 시작한 알고리즘이라 브론즈에도 지레 겁먹고 괴상하게 풀어버렸다.
그냥 조건문 네개로 처리할걸...
'Python > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 25757: 임스와 함께하는 미니게임 (0) | 2024.04.06 |
---|---|
[알고리즘] 백준 4659번: 비밀번호 발음하기 (0) | 2024.04.05 |
[알고리즘] 백준 8979번: 올림픽 (0) | 2024.04.05 |
[알고리즘] 백준 10431번: 줄세우기 (0) | 2024.04.05 |
[알고리즘] 백준 9655번: 돌 게임 (0) | 2024.04.05 |
댓글