백준

[백준] 5073 : 삼각형과 세 변 (Python/파이썬)

sson-coding 2025. 10. 20. 14:55

문제 링크

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")
  1. while True:
    • 여러 삼각형 데이터를 반복해서 입력받기 위해 무한 반복문을 시작합니다.
    • 나중에 break로 반복을 종료합니다.
  2. a, b, c = sorted(map(int, input().split()))
    • 한 줄에 세 변의 길이를 입력받고 정수로 변환합니다.
    • sorted()로 오름차순 정렬하여 항상 a ≤ b ≤ c가 되도록 합니다.
    • 이렇게 하면 가장 긴 변(c)나머지 두 변의 관계를 쉽게 비교할 수 있습니다.
  3. if a == b == c == 0:
    • 세 값이 모두 0이면 입력 종료 조건이므로 반복문을 종료(break) 합니다.
  4. if a + b <= c:
    • 삼각형의 성립 조건은 가장 긴 변의 길이 < 나머지 두 변의 합 입니다.
    • 이를 만족하지 않으면 삼각형이 될 수 없으므로, "Invalid"를 출력합니다.
  5. elif a == b == c:
    • 세 변이 모두 같으면 정삼각형(Equilateral) 이므로 "Equilateral" 출력.
  6. elif a == b or b == c or a == c:
    • 두 변만 같으면 이등변삼각형(Isosceles) 이므로 "Isosceles" 출력.
  7. else:
    • 나머지 경우(세 변이 모두 다름)는 부등변삼각형(Scalene) 이므로 "Scalene" 출력.

새롭게 배운 내용 및 느낀점

  • sorted
    • 요소를 정렬한 새로운 리스트로 반환
    sorted(iterable, *, key=None, reverse=False)
    
    • iterable : 정렬할 대상(리스트, 튜플, 문자열 등)
    • key : 정렬 기준을 지정할 함수
    • reverse : True 면 내림차순, False 면 오름차