python/연습문제 풀이

[백준] python 25304 : 영수증

연정양 2022. 10. 24.

 

 

 

25304번: 영수증

준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것

www.acmicpc.net

10950 을 풀고 자신감을 얻어 도전한 영수증 문제.

문제가 길어 위축될 수 있지만 잘 읽어보면

 

1) 영수증에 적힌 총 금액 x를 입력

2) 물건의 종류의 수 n을 입력

X = int(input())
N = int(input())

3) n개의 줄에 물건의 가격 a와 b가 공백을 사이에 두고 주어짐(입력)

    -2번에서 입력받은 n 만큼 반복되어야 하기에, for의 range를 n으로 설정해 주었다. 

    for문 작성에 앞서 '총 금액'을 계산할 list가 필요하기에 빈 리스트를 하나 만들어 줌. 

bill_list = []
for j in range(1,N+1):
    a, b = map(int, input().split())

4) for문 안에 a(물건의 가격)와 b(개수)를 곱한 금액을 list에 추가해 주었다. 

bill_list.append(a * b)

---> for문이 수행되는 동안 n번 만큼의 물건 개수와 가격을 받고, 각각을 곱한 값이 bill_list에 들어간다.

      * append 함수를 통해 list에 하나씩 넣어주었다. 처음에는 extend를 사용했으나, 넣으려는 수가 int이고 literable이 아니라서 오류가 났기 때문에 append로 변경했다. 

 

5) list의 합이 x(총 금액) 과 맞는지 비교 해서 맞으면 'yes', 틀리면 'no' 출력

if sum(bill_list) == X:
    print("Yes")
else:
    print("No")

---> 문제에서 원하는 출력값은 'yes' or 'no' 하나이기 때문에 이 외의 과정에는 print를 쓸 필요가 없다!

 

전체 코드:

X = int(input())
N = int(input())
bill_list = []
for j in range(1,N+1):
    a, b = map(int, input().split())
    bill_list.append(a * b)
if sum(bill_list) == X:
    print("Yes")
else:
    print("No")

 

 

  

댓글