백준 10101번과 매우 유사한 문제. 1) 입력의 형태, 2) 변이 주어진다는 점을 제외하면 풀이가 동일하다.
나의 풀이
import sys
for s in sys.stdin:
if s == '0 0 0\n':
break
else:
s=[int(i) for i in s.split()]
if max(s) >= sum(s) - max(s):
print('Invalid')
else:
print(['','Equilateral','Isosceles','Scalene'][True*len(set(s))])
고수의 풀이
for i in[*open(0)][:-1]:a,b,c=sorted(map(int,i.split()));print(['Invalid','Equilateral','Isosceles','Scalene'][(a+b>c)*len({a,b,c})])
CODE REVIEW
- 위 코드 모두 논리는 같다. 1) 삼각형의 결정조건 확인 2) 각 list를 set로 바꿔서 변에 따라 정삼각형/이등변삼각형/일반삼각형 구분하기!
- if else 조건문을 압축해서 한 줄로 표현했다.
print(['a','b','c','d'][@])
라고 할 때- @에 들어가는게 False이면 0번째 요소, True이면 1번째 요소,
True*n
이면 n번째 요소를 출력해준다.
True
자리에 삼각형 결정조건을 넣었으면 더 깔끔한 코드가 되었을 것 같다.