[Python] 코딩 도장 - 삼각형 구별하기

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: 삼각형 구별하기] - Lv.1

3개의 각으로 삼각형의 예각, 직각, 둔각을 구별하는 프로그램을 만들어라.

[60, 60, 60] = 예각삼각형
[30, 60, 90] = 직각삼각형
[20, 40, 120] = 둔각삼각형
[0, 90, 90] = 삼각형이 아니다
[60, 70, 80] = 삼각형이 아니다
[40, 40, 50, 50] = 삼각형이 아니다

예각삼각형 : 3개의 각이 모두 예각인 삼각형
직각삼각형 : 1개의 각이 직각인 삼각형
둔각삼각형 : 1개의 각이 둔각인 삼각형
① 각이 3개가 아닐 경우 삼각형이 아니다.
② 3개의 각의 합이 180°가 아닐 경우 삼각형이 아니다.

출처: https://codingdojang.com/scode/614?answer_mode=hide


[풀이]

def triangle(x):
    if (len(x) != 3) | (sum(x) != 180) | (min(x) <= 0):
        print(f"{x} = 삼각형이 아니다.")
    elif max(x) > 90:
        print(f"{x} = 둔각 삼각형")
    elif max(x) == 90:
        print(f"{x} = 직각 삼각형")
    elif max(x) < 90:
        print(f"{x} = 예각 삼각형")

lst = [[60, 60, 60], [30, 60, 90], [20, 40, 120], [0, 90, 90], [60, 70, 80], [40, 40, 50, 50]]

for i in lst:
    triangle(i)
[60, 60, 60] = 예각 삼각형
[30, 60, 90] = 직각 삼각형
[20, 40, 120] = 둔각 삼각형
[0, 90, 90] = 삼각형이 아니다.
[60, 70, 80] = 삼각형이 아니다.
[40, 40, 50, 50] = 삼각형이 아니다.

코드 자체는 단순히 if를 사용해서 작성하였다.

삼각형이 아닌 경우를 제외하고 둔각, 직각, 예각 구분에는 가장 큰 각 하나만 비교해도 된다는 것을 이용하였다.


[추천 풀이]

def testTri(l1):
    if len(l1) != 3 or sum(l1) != 180 or min(l1) <= 0: return "삼각형이 아니다"
    if 90 in l1: return "직각삼각형"
    if max(l1) > 90: return "둔각삼각형"
    return "예각삼각형"

list1 = [[60, 60, 60],
    [30, 60, 90],
    [20, 40, 120],
    [0, 90, 90],
    [60, 70, 80],
    [40, 40, 50, 50]]


for l1 in list1:
    print(l1, '=', testTri(l1))
[60, 60, 60] = 예각삼각형
[30, 60, 90] = 직각삼각형
[20, 40, 120] = 둔각삼각형
[0, 90, 90] = 삼각형이 아니다
[60, 70, 80] = 삼각형이 아니다
[40, 40, 50, 50] = 삼각형이 아니다

사실상 거의 완벽하게 똑같이 푼 것 같다.

Leave a comment