영수증
문제는 다음과 같습니다.
코스트코에서 구매한 물건들의 총 금액 검증하기
문제 소개
대형 마트에서 장을 보고 난 후, 계산이 정확하게 되었는지 확인하는 것은 중요한 일입니다. 특히, 여러 가지 물건을 한꺼번에 구매했다면 가격을 다시 한 번 검토해보는 것이 필요할 수 있습니다.
이 문제에서는 영수증에 적힌 총 금액과 각 물건의 가격 및 개수를 이용해 계산한 금액이 일치하는지 확인하는 프로그램을 작성해야 합니다.
문제 분석
주어진 입력을 분석해 보면,
- 첫 번째 줄에 영수증에 적힌 총 금액 X가 주어집니다.
- 두 번째 줄에 구매한 물건의 종류의 수 N이 주어집니다.
- 이후 N개의 줄에 걸쳐 각 물건의 가격 a와 개수 b가 공백을 두고 주어집니다.
- 계산한 총 금액이 영수증에 적힌 총 금액과 같으면 Yes, 다르면 No를 출력해야 합니다.
해결 방법
이 문제를 해결하는 방법은 간단합니다.
- 먼저 영수증의 총 금액 X를 입력받습니다.
- 구매한 물건의 종류의 수 N을 입력받습니다.
- N개의 물건에 대해 가격과 개수를 입력받고, 이를 이용해 총 금액을 계산합니다.
- 계산한 총 금액이 X와 같으면 "Yes"를 출력하고, 다르면 "No"를 출력합니다.
저의 해답 코드는 다음과 같습니다.
X = int(input())
N = int(input())
total = 0
for _ in range(N):
a, b = map(int, input().split())
total += a * b
if total == X:
print("Yes")
else:
print("No")
이번 문제의 정답 비율은 약 55%입니다.
문제 해석 자체에 대한 어려움이 있거나 문제가 길어 요약이 힘들 거 같아, 앞서 문제를 요약해드렸습니다. 이번에 반복문에 사용한 _ 는 dummy(쓰레기) 즉 필요없는 변수를 넣을 때 사용합니다. 앞으로 for 문에 _ 들어간다면 필요없이 단순 반복하기 위한 구문임을 암시합니다. 반복문을 돌아가면서 총 합을 구하고 조건에 맞으면 Yes 아니면 No를 출력하는 단순한 문제였지만 곱한 것을 누적합 하는것에서 논리적으로 틀린 사람이 있을 거라고 예상합니다.
아래는 다른 사람의 공개된 오답 코드입니다.
X =(a*b) 만 해준다면 X에는 값이 계속 할당 되는 것이지 누적합이 할당 되는 것은 아닙니다.
따라서 누적합을 논리적으로 생각하신다면 복합 할당 연산자를 사용하시는 것을 추천드립니다.
'BaekJoon Reivew' 카테고리의 다른 글
단계별로 풀어보기 백준_15552번 (0) | 2025.02.07 |
---|---|
단계별로 풀어보기 백준_25314번 (0) | 2025.02.07 |
단계별로 풀어보기 백준_8393번 (0) | 2025.02.06 |
단계별로 풀어보기 백준_10950번 (0) | 2025.02.06 |
단계별로 풀어보기 백준_2739번 (0) | 2025.02.06 |