jyamethyst21 님의 블로그

백준 31821번 - '학식 사주기' (PYTHON 풀이) 본문

CODING 💻

백준 31821번 - '학식 사주기' (PYTHON 풀이)

jyamethyst21 2026. 4. 6. 09:16

문제:

 

먼저, 메뉴의 수가 주어지고 각 메뉴 당 판매 금액을 입력받는다.

다음으로 학생의 수와 학생이 먹고싶어하는 메뉴 번호를 또 입력받는다.

그 다음 각 학생이 고른 메뉴의 판매 금액을 전부 더해서 출력하면 되는 문제이다.

 

풀이:

N = int(input())
menu = []

for i in range(N):
    menu.append(int(input()))

total = 0
M = int(input())
for j in range(M):
    number = int(input())
    total += menu[number-1]

print(total)

앞서 말한 것처럼 메뉴의 수를 입력받고 해당 수만큼 반복문을 돌면서 각 메뉴 당 판매 금액을 입력받아 menu라는 리스트에 담는다.

다음, 학생의 수와 학생이 선택한 메뉴 번호를 동일하게 입력받고, total이라는 변수에 원하는 메뉴의 판매 금액을 더한다.

원하는 메뉴의 판매 금액을 구하기 위해서는 인덱스를 활용하면 된다. 인덱스는 0부터 시작하기 때문에 학생이 선택한 메뉴-1을 검색해서 바로 더하면 된다.

 

예를 들어, menu에 [5000, 7000, 10000]이 있고 학생이 2번 메뉴를 골랐을 때 menu[2]를 하면 인덱스 규칙 상 10000이 더해지므로 원하는 합계 금액이 나오지 않는다. 그래서 menu[2-1](=menu[1]) 형태로 더해서 인덱스 규칙을 만족시킨 뒤 최종적으로 전부 더해진 total을 출력하면 문제를 풀 수 있다.