https://www.acmicpc.net/problem/25304
문제
해석
물건 여러 개를 입력받아 최종적인 값을 구한 후 처음 입력한 값과 일치하면 Yes 일치하지 않으면 No를 출력합니다.
총금액을 구하려면 물건 수만큼 반복시키는 반복문이 필요하고 물건 값을 비교하는 조건문을 사용해야 해 if문으로 출력해야 합니다.
물건의 종류가 매우 많다면, 반복문은 시간복잡도가 상수가 아니기 때문에 주어진 값을 바로바로 계산하고 그때마다 변수에 더하해야 하지만, 물건의 종류가 100개 이하이기 때문에 반복문을 사용해도 문제가 없음을 확인할 수 있습니다.
풀이
첫 줄에 주어지는 금액은 마지막 if문으로 처리하면 Yes, No를 출력하는 코드를 작성할 수 있습니다.
if (sum == X)
cout << "Yes";
else
cout << "No";
물건의 종류는 반복 횟수를 알려주기 때문에 이를 이용해 다음과 같이 반복문을 쓸 수 있고 sum 변수를 통해 총금액 합을 구합니다.
int sum=0;
for (int i = 0; i < N; i++) {
cin >> a >> b;
sum += a * b;
}
sum을 0으로 초기화하지 않는 다면 쓰레기 값이 같이 더해집니다.
최종적인 코드는 다음과 같습니다.
#include<iostream>
using namespace std;
int main() {
int X, N, a, b, sum=0;
cin >> X >> N;
for (int i = 0; i < N; i++) {
cin >> a >> b;
sum += a * b;
}
if (sum == X)
cout << "Yes";
else
cout << "No";
}
정리
이 문제는 앞에서 푼 반복문 문제의 논리를 사용한 문제입니다.
1. 횟수를 입력받고 반복시키는 코드
https://whitecode2718.tistory.com/66
2. 합 알고리즘
https://whitecode2718.tistory.com/67
'프로그래밍 > 코딩 테스트 연습' 카테고리의 다른 글
[백준] 11022번 : A+B - 8 (3단계) (C++) (0) | 2024.01.10 |
---|---|
[백준] 11021번 : A+B - 7 (3단계) (C++) (0) | 2024.01.10 |
[백준] 8393번 : 합 (3단계) (C++) (0) | 2024.01.09 |
[백준] 10950번 : A+B - 3 (3단계) (C++) (1) | 2024.01.09 |
[백준] 2739번 : 구구단 (3단계) (C++) (1) | 2024.01.09 |