※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 26934번 문제인 The Bus Card이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/26934
26934번: The Bus Card
You are going to purchase a bus card. It's a refillable card that cash can be deposited into, and then used to ride the bus until you are out of money. You know that you're planning to travel for $K$ Swedish crowns (SEK). Charging the card takes some time
www.acmicpc.net
먼저 필요금액을 이용해 100단위의 값의 목표금액을 구해주자. 예를 들어 필요금액이 180이면 목표금액은 200이, 필요금액이 300이면 목표금액은 300이, 필요금액이 1234면 목표금액은 1300이 된다. 이는 필요금액을 100으로 나눈 나머지가 0인지 아닌지를 이용한 조건문으로 구해낼 수 있다.
위에서 구한 목표금액을 충전하는 데에 필요한 충전 횟수는 그리디한 전략으로 구해낼 수 있다. 구체적으로, 가능한 한 500을 많이 충전한 후 남은 금액을 100과 200을 이용해 충전하는 것으로 문제를 해결하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int K;
int arr[5] = { 0,1,1,2,2 };
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> K;
if (K % 100) K = K / 100 + 1;
else K = K / 100;
cout << K / 5 + arr[K % 5];
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 1269 // C++] 대칭 차집합 (0) | 2023.01.12 |
---|---|
[BOJ 26935 // C++] Släktträffen (0) | 2023.01.12 |
[BOJ 6602 // C++] Eeny Meeny Moo (0) | 2023.01.12 |
[BOJ 15828 // C++] Router (0) | 2023.01.12 |
[BOJ 6601 // C++] Knight Moves (0) | 2023.01.11 |