차곡차곡

[BOJ/Python, Javascript] 백준 5073번 - 삼각형과 세 변 본문

CS/Algorithm

[BOJ/Python, Javascript] 백준 5073번 - 삼각형과 세 변

sohy 2023. 5. 13. 10:32

백준 #5073 삼각형과 세 변

 

5073번: 삼각형과 세 변

각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오.

www.acmicpc.net

# 더러운 코드

while True:
  triangle = list(map(int, input().split()))
  if triangle[0] == 0 and triangle[1] == 0 and triangle[2] == 0:
     break
  max_x = -1
  max_idx = -1
  for i in range(3):   #  가장 큰 변 구하기
    if max_x < triangle[i]:
      max_x = triangle[i]
      max_idx = i
  hap = 0  # 두 변의 합
  for i in range(3):
    if i == max_idx:
      continue
    else:
      hap += triangle[i]
  if max_x > hap:   # 두 변의 길이가 가장 긴 변의 길이보다 길지 않은 경우
    print('Invalid')
  elif triangle[0] == triangle[1] and triangle[1] == triangle[2]:   # 세 변의 길이가 모두 같은 경우
    print('Equilateral')
  elif triangle[0] == triangle[1] or triangle[0] == triangle[2] or triangle[1] == triangle[2]:   # 두 변의 길이만 같은 경우
    print('Isosceles')
  else:   # 세 변의 길이가 모두 다른 경우
    print('Scalene')
# 개선된 코드

while True:
  triangle = sorted(list(map(int, input().split())))
  if triangle[0] == triangle[1] == triangle[2] == 0:
     break
  if triangle[0] + triangle[1] <= triangle[2]:   # 두 변의 길이가 가장 긴 변의 길이보다 길지 않은 경우  
    print('Invalid')
  elif triangle[0] == triangle[1] == triangle[2]:   # 세 변의 길이가 모두 같은 경우
    print('Equilateral')
  elif triangle[0] == triangle[1] or triangle[1] == triangle[2] or triangle[2] == triangle[0]:   # 두 변의 길이만 같은 경우
    print('Isosceles')
  else:   # 세 변의 길이가 모두 다른 경우
    print('Scalene')

단순 구현 문제

 


 

javascript Ver.

const data = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n");
data.pop();   // 0 0 0 값 제거
const result = []
for(let el of data) {
  const input = el.split(' ').map(Number);
  input.sort((a, b) => a - b);
  if(input[0] + input[1] <= input[2]) {
    result.push('Invalid');
    continue;
  }
  const set = new Set(input);   // 같은 값은 하나만 저장되는 집합의 성질 이용
  if(set.size === 1) {
    result.push('Equilateral');
  } else if(set.size === 2) {
    result.push('Isosceles');
  } else {
    result.push('Scalene');
  } 
}
console.log(result.join('\n'));
Comments