본문 바로가기

코드업 문제집 파이썬 if~else 1218 : 삼각형 판단하기

관리하수달 2026. 9. 7.

[문제]

삼각형의 3변의 길이 a, b, c가 입력으로 주어진다.

여기서 입력되는 변의 관계는 a ≤ b ≤ c 이다. 

그 삼각형이 무슨 삼각형인지 출력하시오.

[문제 해설(핵심)]

가장 먼저 삼각형을 만들 수 있는지 확인한다.

가장 긴 변이 c일 때

a + b > c

이면 삼각형을 만들 수 있다.

반대로

a + b <= c

이면 삼각형아님을 출력한다.

삼각형이 맞다면 조건에 따라 종류를 구분한다.

a = b = c             → 정삼각형
두 변의 길이가 같음     → 이등변삼각형
a² + b² = c²          → 직각삼각형
나머지                 → 삼각형

 

[문제 풀이 1 - if / elif 사용]

삼각형이 만들어지지 않는 경우를 가장 먼저 확인한다.

세 변이 모두 같은지 확인한다.

두 변이 같은지 확인한다.

피타고라스 정리를 이용해 직각삼각형인지 확인한다.

나머지는 일반 삼각형이다.

 

 

[사용된 개념 설명]

and : 두 조건이 모두 참인지 확인

a == b and b == c

or : 두 조건 중 하나라도 참인지 확인

a == b or b == c

a * a : a²를 의미

a * a + b * b == c * c

피타고라스 정리인

a² + b² = c²

를 코드로 표현한 것이다.

 

[코드]

a, b, c = map(int, input().split())

if a + b <= c:
    print("삼각형아님")

elif a == b and b == c:
    print("정삼각형")

elif a == b or b == c:
    print("이등변삼각형")

elif a * a + b * b == c * c:
    print("직각삼각형")

else:
    print("삼각형")

[문제 풀이 2 - 중첩 if문 사용]

이번에는 처음부터

if a + b > c:

를 이용해 삼각형인 경우와 아닌 경우를 먼저 나눌 수도 있다.

삼각형이라면 그 안에서 다시 종류를 판단한다.

[핵심]

삼각형을 만들 수 있음
        ↓
  어떤 삼각형인지 판단

삼각형을 만들 수 없음
        ↓
     삼각형아님

[코드]

a, b, c = map(int, input().split())

if a + b > c:

    if a == b and b == c:
        print("정삼각형")

    elif a == b or b == c:
        print("이등변삼각형")

    elif a * a + b * b == c * c:
        print("직각삼각형")

    else:
        print("삼각형")

else:
    print("삼각형아님")

[두 풀이 비교]

풀이 1은 조건을 if - elif - else로 차례대로 확인해서 코드가 짧고 보기 쉽다.

풀이 2는 먼저 삼각형인지 아닌지 크게 나눈 다음 종류를 판단해서 조건의 의미를 이해하기 쉽다.

이 문제에서는 풀이 1이 더 간단하고 추천하는 방법이다.

댓글