밑의 링크는 CodeUp에서의 문제 링크입니다.
문제는 링크를 통해서 직접 봐주시길 바랍니다.
주의해야 할 점
1. map, split을 사용하는 입력 방식
실수나 정수인 여러 값들이 입력값일 때,
split 메서드를 사용해 공백이나 어떤 문자를 기준으로 입력값을 여러 값들로 분리하고,
map 내장 함수로 각각의 값들을 int형이나 float형으로 정수, 실수 자료형으로 변환하는 기법은 매우 많이 쓰입니다.
코드 이해부터 하고 나면 다른 문제에서도 외운 듯이 사용해봅시다.
num1, num2 = map(int, sys.stdin.readline().split())
예제 설명
1. 첫 번째 예제
- 입력
1 2
- 출력
angry
- 설명
입력한 두 개의 메뉴 번호는 1, 2입니다.
메뉴 1번 치즈버거의 칼로리는 400 칼로리, 메뉴 2번 야채버거의 칼로리는 340 칼로리이므로
칼로리의 합은 740 칼로리입니다.
칼로리의 합인 740 칼로리는 500 보다 크므로 문자열 'angry'를 출력합니다.
생각한 풀이 과정
먼저 메뉴 번호의 순서대로 각 메뉴의 칼로리 값들로 구성된 리스트 menus_calorie를 만들어줍니다.
두 개의 메뉴 번호를 입력하면, 번호에 1을 뺀 값을 인덱스로 사용하여 menus_calorie로부터
두 메뉴의 칼로리 값을 구해옵니다.
두 메뉴의 칼로리의 합을 구합니다.
칼로리의 합이 500 보다 크다면, 문자열 'angry'를 출력합니다.
그 외의 경우, 즉, 칼로리의 합이 500 이하라면, 문자열 'not angry'를 출력합니다.
제출한 파이썬 코드
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 문제에서 주어진 메뉴의 번호 순서에 따라 칼로리 값들로 구성된 리스트를 만들어줍니다.
menus_calorie = [400, 340, 170, 100, 70]
# 메뉴의 번호 두 개를 공백으로 구분해 입력합니다.
num1, num2 = map(int, stdin.readline().split())
# 입력한 각 메뉴의 번호에 해당하는 음식의 칼로리들을 더하고, 그 값을 변수에 저장합니다.
calorie_sum = menus_calorie[num1 - 1] + menus_calorie[num2 - 1]
# 칼로리의 합이 500보다 크면
if calorie_sum > 500:
# 문자열 'angry'를 출력합니다.
print('angry')
# 그 외의 경우, 즉 500 이하라면
else:
# 문자열 'no angry'를 출력합니다.
print('no angry')
제출 결과
느낀 점
처음 제출한 코드에서는 칼로리의 합의 크기를 500과 비교하는 조건식에서
500 초과인 조건식 if calorie_sum > 500: 대신 500 이상인 if calorie_sum >= 500: 을 사용해버려
잘못된 풀이 결과를 보고 말았습니다.
댓글