파이썬/BOJ_반복문

[백준 25304 파이썬] 영수증 - 반복문 (for 문, 조건문, feat. 코스트코)

쉽게사는방법 2023. 1. 6. 10:07
반응형

[백준 25304 파이썬] 영수증 - 반복문 (for 문, 조건문, feat. 코스트코)


안녕하세요.
갑자기 문제가 확 길어졌네요. 코스트코에서 영수증을 받고, 총 금액과 물품별 금액의 합계를 맞춰보는 문제군요. 반복문과 더불어 조건문도 필요할 것 같습니다. 음... 코딩을 하는 것보다 'Yes'를 출력하기 위해 계산해서 입력하는게 더 어려울 것 같네요!

문제

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

영수증에 적힌,

  • 구매한 각 물건의 가격과 개수
  • 구매한 물건들의 총 금액

을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.

입력

첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.

둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.

이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.

출력

구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다. 일치하지 않는다면 No를 출력한다.

제한

  •  1≤X≤1000000000
  •  1≤N≤100
  •  1≤a≤1000000
  •  1≤b≤10

 

문제 분석

입력은 3 종류입니다.

첫째 줄: 총 금액

둘째 줄: 물건 종류 (테스트 케이스와 같다고 생각하시면 됩니다)

셋째 줄 이하: 물건의 가격, 갯수

 

테스트 케이스로 반복횟수가 정해져 있으니 for 문을 사용하도록 하겠습니다.

아래 예시처럼 작동되도록 for문으로 루프를 만들어 돌리면 되겠죠?

루프 (0 ≤ i < N )
(N: 테스트케이스 수)
물건 종류별 금액
(물건 가격(a) X 갯수(b))
누적 금액
(Y)
0 5,000 * 3 = 15,000 15,000
1 3,000 * 5 = 15,000 30,000
2 10,000 * 2 = 20,000 50,000

루프 종료 후 누적 금액 (Y)과 처음 입력한 총 금액 (X)를 비교해서 결과 (Yes / No)를 출력해 주면 되겠네요!
이 부분은 조건문을 활용해야겠죠? 조건문이 잘 생각나지 않으신다면 '조건문' 카테고리의 글들을 참고해 주시면 좋을 것 같습니다.

 

참고로 문제에서 '제한' 부분은 크게 신경쓰지 않으셔도 문제풀이에 지장은 없습니다.

 

답안

'문제 분석'을 기초로 아래와 같이 코드를 작성해 보았습니다. 주의하실 점은 for문 들어가기 전에 누적 계산 값이 저장될 Y 변수는 0으로 초기화 해주어야 한다는 점입니다!

백준 25304 풀이 (파이썬)
백준 25304 풀이 (파이썬)


테스트케이스 수 N은 3으로 입력한 것으로 보실 수 있는데요. for문에서 range (0,N) 으로 지정 시, 0~N-1까지만 루프가 돌아가므로 (총 N번) '문제 분석'에서 i=0, 1, 2로 표시한 것과 혼동하지 않으셔야겠죠!

제출 화면은 생략하고 이만 마치도록 하겠습니다.
읽어주셔서 감사합니다.

반응형