문제 링크
https://www.acmicpc.net/problem/5073
문제
삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.
Equilateral : 세 변의 길이가 모두 같은 경우
Isosceles : 두 변의 길이만 같은 경우
Scalene : 세 변의 길이가 모두 다른 경우
단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다.
예를 들어 6, 3, 2가 이 경우에 해당한다.
가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다.
세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오.
입력
각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다.
마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다.
출력
각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오.
예제
입력
7 7 7
6 5 4
3 2 5
6 2 6
0 0 0
출력
Equilateral
Scalene
Invalid
Isosceles
정답 및 풀이
while True:
a, b, c = sorted(map(int, input().split()))
if a == b == c == 0:
break
if a + b <= c:
print("Invalid")
elif a == b == c:
print("Equilateral")
elif a == b or b == c or a == c:
print("Isosceles")
else:
print("Scalene")
- while True:
- 여러 삼각형 데이터를 반복해서 입력받기 위해 무한 반복문을 시작합니다.
- 나중에 break로 반복을 종료합니다.
- a, b, c = sorted(map(int, input().split()))
- 한 줄에 세 변의 길이를 입력받고 정수로 변환합니다.
- sorted()로 오름차순 정렬하여 항상 a ≤ b ≤ c가 되도록 합니다.
- 이렇게 하면 가장 긴 변(c) 과 나머지 두 변의 관계를 쉽게 비교할 수 있습니다.
- if a == b == c == 0:
- 세 값이 모두 0이면 입력 종료 조건이므로 반복문을 종료(break) 합니다.
- if a + b <= c:
- 삼각형의 성립 조건은 가장 긴 변의 길이 < 나머지 두 변의 합 입니다.
- 이를 만족하지 않으면 삼각형이 될 수 없으므로, "Invalid"를 출력합니다.
- elif a == b == c:
- 세 변이 모두 같으면 정삼각형(Equilateral) 이므로 "Equilateral" 출력.
- elif a == b or b == c or a == c:
- 두 변만 같으면 이등변삼각형(Isosceles) 이므로 "Isosceles" 출력.
- else:
- 나머지 경우(세 변이 모두 다름)는 부등변삼각형(Scalene) 이므로 "Scalene" 출력.
새롭게 배운 내용 및 느낀점
- sorted
- 요소를 정렬한 새로운 리스트로 반환
sorted(iterable, *, key=None, reverse=False)- iterable : 정렬할 대상(리스트, 튜플, 문자열 등)
- key : 정렬 기준을 지정할 함수
- reverse : True 면 내림차순, False 면 오름차
'백준' 카테고리의 다른 글
| [백준] 24262 : 알고리즘 수업 - 알고리즘의 수행 시간 1 (Python/파이썬) (0) | 2025.10.21 |
|---|---|
| [백준] 14215 : 세 막대 (Python/파이썬) (0) | 2025.10.20 |
| [백준] 10101 : 삼각형 외우기 (Python/파이썬) (0) | 2025.10.20 |
| [백준] 9063 : 대지 (Python/파이썬) (0) | 2025.10.16 |
| [백준] 15894 : 수학은 체육과목 입니다 (Python/파이썬) (0) | 2025.10.16 |