-
[BAEKJOON] 10101 삼각형 외우기알고리즘 2023. 12. 22. 10:13반응형
문제
창영이는 삼각형의 종류를 잘 구분하지 못한다. 따라서 프로그램을 이용해 이를 외우려고 한다.
삼각형의 세 각을 입력받은 다음,
- 세 각의 크기가 모두 60이면, Equilateral
- 세 각의 합이 180이고, 두 각이 같은 경우에는 Isosceles
- 세 각의 합이 180이고, 같은 각이 없는 경우에는 Scalene
- 세 각의 합이 180이 아닌 경우에는 Error
를 출력하는 프로그램을 작성하시오.
입력
총 3개의 줄에 걸쳐 삼각형의 각의 크기가 주어진다. 모든 정수는 0보다 크고, 180보다 작다.
출력
문제의 설명에 따라 Equilateral, Isosceles, Scalene, Error 중 하나를 출력한다.
예제 입력 1 복사
60 70 50
예제 출력 1 복사
Scalene
이 문제 같은 경우 보통이라면 리스트로 받아서 해당 값이 있는지 체크를 하거나 했을 문제지만,
아이디어가 떠올라서 set으로 집합으로 바꾸면 중복은 제거가 되는 것을 이용해서 풀이를 하였다.
중복이 제거가 되면 3개가 동일하다면 1개만 남을 것이고 2개가 중복이면 2개만 남을 것이다.
그 방법을 이용하여 풀이를 하였다.
import sys
ts = []
ps = sys.stdin.readlines()
for i in ps:ts.append(int(i.rstrip()))
tt = sum(ts)
if tt == 180:tst = set(ts)tst_length = len(tst)if tst_length == 1:print('Equilateral')elif tst_length == 2:print('Isosceles')else:print('Scalene')else:print('Error')그리고 readlines를 사용한 이유는 어디 블로그를 보았는데
파일 한 문단으로 받기 때문에 반복이 덜 되어 실행 속도를 조금 더 줄일 수 있다고 한다.
그래서 최대한 여러개를 입력받는 문제라면 이런 방법으로 풀이를 하려고 노력하고 있다.
반응형'알고리즘' 카테고리의 다른 글
[BAEKJOON] 10797 10부제 (0) 2023.12.24 [BAEKJOON] 17478 재귀함수가 뭔가요? (0) 2023.12.23 [BAEKJOON] 10814 나이순 정렬 (0) 2023.12.21 [BAEKJOON] 14928 큰 수 (BIG) (0) 2023.12.21 [BAEKJOON] 4344 평균은 넘겠지 (0) 2023.12.20