안경잡이 구루루

백준 10101 (삼각형 외우기) [Python/파이썬] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 10101 (삼각형 외우기) [Python/파이썬]

구루루(gururu) 2023. 9. 3. 11:01
반응형

https://www.acmicpc.net/problem/10101

10101번: 삼각형 외우기

문제의 설명에 따라 Equilateral, Isosceles, Scalene, Error 중 하나를 출력한다.

www.acmicpc.net

 


나:

angles=[]
totall =0

for i in range(3):
  angle = int(input())
  totall +=angle
  angles.append(angle)  

no_dup = set(angles)
if totall != 180:
  print('Error')
else:
  if len(no_dup) ==3:
    print('Scalene')
  if len(no_dup) ==2:
    print('Isosceles')
  if len(no_dup) ==1:
    print('Equilateral')

완성된 코드는 위와 같다,
 

(1)
angles=[]
totall =0

입력받은 값을 저장한 angles 라는 리스트 변수를 선언
삼각형 내각의 총 합인 180 도 맞는지 확인하기 위해 totall 변수를 선언해 값을 받고자 함

 

(2)
for i in range(3):
  angle = int(input())
  totall +=angle
  angles.append(angle)

삼각형의 각은 총 3개라서 반복문을 총 3번 반복한다.
이때 받 각을 받는 변수 angle은 정수형으로 입력받고 입력 받을 때 마다 totall 에 더해진다.
또한 입력받은 angle은 삼각형 모든 각들을 가질 angles 리스트에 넣어 나중에 활용하고자 했다.

 

(3)
no_dup = set(angles)

if totall != 180:
  print('Error')
else:
  if len(no_dup) ==3:
    print('Scalene')
  if len(no_dup) ==2:
    print('Isosceles')
  if len(no_dup) ==1:
    print('Equilateral')

중복 여부를 확인하기 위해 set 함수를 이용해 그 결과를 no_dup 라는 변수에 넣음
조건문 if 절을 이용해 앞에서 180가 아닐 때 와 맞을 때로 크게 두 경우로 분리했다.
set() 함수는 중복의 경우 그 중복되는 값들 중 하나가 사라지는데 이를 이용해 그 값들을 가진 변수의 길이를 len() 함수를 이용  경우에 따라  Equilateral, Isosceles, Scalene 로 표현
이때 총 내각의 합이 180를 만족하는 경우 세각이 모두 같다면 그 모든 각들은 60를 만족할 수 밖에 없음에 주의하면 좋다

 


다른사람:

a = int(input())
b = int(input())
c = int(input())

if a + b + c != 180:
  print("Error")
elif a == b == c:
  print("Equilateral")
elif a == b or a == c or b == c:
  print("Isosceles")
else:
  print("Scalene")

완성된 코드는 위와 같다,
주목할 점은 반복문 사용없고 변수를 최소한으로 해서 나 또한 생각해 볼만한  코드라서 가져오게 되었다.
(1) 반복문, 리스트 사용 없이 어짜피 삼각형 각이 총 3개라서 각각을 a,b,c 로 받아 활용하기 편하게 함
(2) 내가 만든 totall 값은 앞서 받았던 3개의 입력값들을 더해주는 식으로 간단히 표현
(3) 나와 마찬가지로 180를 만족한 상태면 a==b==c 는 모두가 60도인 경우만 존재할 수 밖에 없다는 사실에 주목해 elif 로 코드 구현

 

반응형