밑의 링크는 CodeUp에서의 문제 링크입니다.
문제는 링크를 통해서 직접 봐주시길 바랍니다.
주의해야 할 점
1. map, split, list를 사용하는 입력 방식
실수나 정수인 여러 값들이 입력값일 때,
split 메서드를 사용해 공백이나 어떤 문자를 기준으로 입력값을 여러 값들로 분리하고,
map 내장 함수로 각각의 값들을 int형이나 float형으로 정수, 실수 자료형으로 변환하는 한 뒤,
list로 묶어 리스트 변수에 넣어주는 기법은 매우 많이 쓰입니다.
코드 이해부터 하고 나면 다른 문제에서도 외운 듯이 사용해봅시다.
num_list = list(map(int, sys.stdin.readline().split()))
2. 삼각형의 성립 조건
문제에서는 삼각형의 성립 조건을 가르쳐줬습니다.
그런데, 어디선가 삼각형의 성립 조건을 따로 제공하지 않은 문제도 본 것 같은 기억이 있습니다.
삼각형의 성립 조건은 그리 어려운 공식이 아니므로 혹시나 하는 상황에 대비해 외워둡시다.
예제 설명
1. 첫 번째 예제
- 입력
2 3 4
- 출력
yes
- 설명
입력한 세 직선의 길이는 2, 3, 4입니다.
가장 긴 직선의 길이는 4이고, 나머지 두 직선의 길이의 합은 2 + 3 = 5입니다.
삼각형의 성립 조건인 (가장 긴 변의 길이) < (나머지 두 변의 길이의 합)을 만족하므로,
문자열 'yes'를 출력합니다.
생각한 풀이 과정
세 직선의 길이를 입력하면, 가장 긴 직선의 길이를 변수 max_len_side에 저장합니다.
더 짧은 나머지 두 직선의 길이의 합을 구해 변수 short_sides_len_sum에 저장합니다.
삼각형의 성립 조건에 따라,
가장 긴 직선의 길이인 max_len_side의 값이 나머지 두 직선의 길이의 합인 short_sides_len_sum의 값보다 작다면,
삼각형이 가능하므로 문자열 'yes'를 출력합니다.
그 외의 경우, 즉, 가장 긴 직선의 길이인 max_len_side의 값이
나머지 두 직선의 길이의 합인 short_sides_len_sum의 값 이상이면,
삼각형을 만들 수 없으므로 문자열 'yes'를 출력합니다.
제출한 파이썬 코드
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 직선의 길이 3개를 공백으로 구분해 입력합니다.
# 각각 int형으로 변환하고, 리스트 변수 sides에 넣어줍니다.
sides = list(map(int, stdin.readline().split()))
# sides에서 가장 긴 직선의 길이를 구하고 변수 max_len_side에 저장합니다.
max_len_side = max(sides)
# 모든 직선들의 길이의 합을 구하고 변수 sides_len_sum에 저장합니다.
sides_len_sum = sum(sides)
# 모든 직선들의 길이의 합에서 가장 긴 직선의 길이를 빼서
# 더 짧은 두 직선들의 길이의 합을 구해 변수 short_sides_len_sum에 저장합니다.
short_sides_len_sum = sides_len_sum - max_len_side
# 가장 긴 직선의 길이가 더 짧은 나머지 두 직선들의 길이의 합보다 작다면
if max_len_side < short_sides_len_sum:
# 삼각형이 성립되므로, 문자열 'yes'를 출력합니다.
print('yes')
# 그 외의 경우, 즉, 가장 긴 직선의 길이가 더 짧은 나머지 두 직선들의 길이의 합 이상이라면
else:
# 삼각형이 성립되지 않으므로, 문자열 'no'를 출력합니다.
print('no')
제출 결과
댓글