대기업 코테 유형

(백준/파이썬) [Bronze III] 삼각형과 세 변 - 5073

난쟁이 개발자 2024. 9. 3. 15:49
반응형

[Bronze III] 삼각형과 세 변 - 5073

문제 링크

성능 요약

메모리: 108080 KB, 시간: 88 ms

분류

기하학, 구현, 수학

제출 일자

2024년 8월 16일 03:21:59

문제 설명

삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.

  • Equilateral : 세 변의 길이가 모두 같은 경우
  • Isosceles : 두 변의 길이만 같은 경우
  • Scalene : 세 변의 길이가 모두 다른 경우

단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다. 예를 들어 6, 3, 2가 이 경우에 해당한다. 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다.

세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오.

입력

각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다.

출력

각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오.

 

풀이

자칫 코드 구현이 어렵게 느껴졌던 문제였다. 그러나 구현이 안 되는 부분부터 하나씩 해나가는 것이 중요하였다. 

먼저, Invalid 조건이 어떤게 있을까. 가장 긴 변이 나머지 두 변의 합보다 같거나 길다면 삼각형이 성립하지 않는다. 기초적인 삼각형을 구성하는 조건이다. 

두 번째로, Invalid 조건을 제거한다면, 나머지는 세 변의 길이가 같거나, 세 변의 길이가 전부 다르거나, 두 변의 길이만 같거나 의 조건을 차례대로 작성한다면 비교적 쉽게 구현이 가능할 것이다.

침착하게 생각하면 쉽게 풀 수 있는 문제이고, 노트에 조건을 하나씩 작성해가며 작성하면 쉽게 풀 수 있을 것이다.

더보기
triangle = []
while True :
    length = list(map(int, input().split()))
    if length == [0, 0, 0] :    
        break
    length.sort()   # 오름 차순으로 입력을 정렬
    triangle.append(length) # 입력을 리스트에 저장

for a, b, c in triangle :
    if a + b <= c : # 가장 긴 변이 나머지 두 변의 합보다 같거나 크다면
        print("Invalid")    # 삼각형의 구성 조건을 성립하지 않으므로

    else :  
        if a == b == c :    # 세 변의 길이가 같다면
            print('Equilateral')
        elif a != b != c :  # 세 변의 길이가 모두 다르다면
            print('Scalene')
        else :              # 나머지인, 세 변의 길이 중 두 변만 같다면
            print('Isosceles')
반응형