티스토리 뷰
상근날드
문제
상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다.
햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다.
햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오.
입력
입력은 총 다섯 줄이다. 첫째 줄에는 상덕버거, 둘째 줄에는 중덕버거, 셋째 줄에는 하덕버거의 가격이 주어진다. 넷째 줄에는 콜라의 가격, 다섯째 줄에는 사이다의 가격이 주어진다. 모든 가격은 100원 이상, 2000원 이하이다.
출력
첫째 줄에 가장 싼 세트 메뉴의 가격을 출력한다.
예제 입력
800
700
900
198
330
예제 출력
848
해설
이 문제는 if문을 사용하여 최솟값을 찾는 것이 관건이다. 버거 3종과 소다 2종의 가격이 각각 한 라인씩 입력되면 6종의 세트 가격을 계산하고 이 중에서 가장 싼 세트의 가격을 출력하면 된다. 간단하게 2줄로 요약하면 아래와 같다.
- 버거 3종과 소다 2종의 조합으로 만들 수 있는 각 세트의 가격 계산
- 각 세트의 가격 중 가장 낮은 가격 출력
1
은 중접된 for문을 이용한다. 첫 번째 for문에서 버거 3종을 순차적으로 돌리고 두 번째 for문에서 소다 2종을 돌리면 조합 가능한 6종의 세트가 완성된다.
2
는 위의 for문 안에서 if문을 이용하여 세트 가격을 비교하여 변수에 가장 낮은 가격만을 저장되도록 한다. 이 변수를 마지막에 화면에 출력하면 된다.
for (i = 0; i < 3; ++i) {
for (j = 0; j < 2; ++j) {
temp = burger[i] + soda[j] - 50;
if(temp < set)
{
set = temp;
}
}
}
소스코드: C
#include <stdio.h>
int main(int argc, char *argv[])
{
int burger[3];
int soda[2];
int i, j, temp, set = 2100;
for (i = 0; i < 3; ++i) {
scanf("%d", &burger[i]);
}
for (j = 0; j < 2; ++j) {
scanf("%d", &soda[j]);
}
for (i = 0; i < 3; ++i) {
for (j = 0; j < 2; ++j) {
temp = burger[i] + soda[j] - 50;
if(temp < set)
{
set = temp;
}
}
}
printf("%d", set);
return 0;
}
소스코드: python3
burger = list()
soda = list()
for i in range(0, 3):
burger.append(int(input()))
for i in range(0, 2):
soda.append(int(input()))
prices = [ (b+s-50) for b in burger for s in soda]
print(min(prices))
이번 파이썬 코드에서 주목해야 할 부분은 리스트의 표현식(List Comprehesions)이다.
prices = [ (b+s-50) for b in burger for s in soda]
해설의 1
부분을 해결하기 위해서는 C 소스코드에서와 같이 다중 for문을 사용할 수 있으나 파이썬 코드에서는 리스트 표현식을 사용한 것이다. 표현식 안에서 다중 for문을 기술하여 버거과 소다의 세트 조합을 만들고 그 가격들을 원소로 하는 리스트 prices
를 생성한 것이다. 세트 가격의 리스트 prices
가 있기에 내장함수 min()을 이용하여 prices
에서 가장 낮은 값를 출력하도록 하였다.
'Python > 심사문제' 카테고리의 다른 글
백준(BAEKJOON): OX퀴즈(8958번) (0) | 2020.03.12 |
---|---|
백준(BAEKJOON): 평균(1546번) (0) | 2020.03.09 |
백준(BAEKJOON): 나머지(3052번) (0) | 2020.01.15 |
백준(BAEKJOON): 숫자의 개수(2577번) (0) | 2020.01.08 |
백준(BAEKJOON): 음계(2920번) (0) | 2020.01.07 |
- Total
- Today
- Yesterday
- python3
- 어원
- 리찬규
- PyQt5
- C
- QLabel
- judge
- 소수
- Python
- tips
- django
- QLineEdit
- 유래
- baekjoon
- BOJ
- locallibrary
- 북한말
- words
- NK
- 리규찬
- Tistory
- word
- 백준
- QtDesigner
- Mac
- setText()
- books
- QComboBox
- QGridLayout
- MacOS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |