백준 10101번 바로가기

나의 풀이

angle = []

for _ in range(3):
  angle.append(int(input()))

if sum(angle) != 180:
  print('Error')
else:
  if len(set(angle)) == 1:
    print('Equilateral')
  elif len(set(angle)) == 2:
    print('Isosceles')
  else:
    print('Scalene')

고수의 풀이

print(['Error','Equilateral','Isosceles','Scalene'][(sum(c:=[*map(int,open(0))])==180)*len({*c})])

출처

CODE REVIEW

  1. 위 코드 모두 논리는 같다. 1) 세각의 합이 180도인지 확인 2) 각 list를 set로 바꿔서 길이에 따라 정삼각형/이등변삼각형/일반삼각형 구분하기!
  2. 다만 고수의 풀이에서 볼 수 있듯이 if else 조건문을 압축해서 한 줄로 표현할 수도 있긴 하다.
    • print(['a','b','c','d'][@])라고 할 때
    • @에 들어가는게 False이면 0번째 요소, True이면 1번째 요소, True*n이면 n번째 요소를 출력해준다.
    • 이를 이용하면 간단하게 식이 바뀐다.
  3. 굳이 필요없어보이기도 하지만 if else 조건문 분기가 많아지게 되면 써먹을만 할 것 같다.