728x90
반응형
그리디에서 풀었던 거스름돈 문제랑 거의 똑같은 문제.
그때는 반복문을 돌려서 N과 M 중 어떤 것을 빼야하는지 조건문으로 걸러줬다면,
지금은 입력값이 M(더 큰 값)으로 나누어질 때까지 더 작은 N을 빼주었다!
#include<iostream>
using namespace std;
int main()
{
int num, answer = 0;
cin >> num;
// 5로 나누어질 때까지 3을 뺀다
while (num % 5 && num > 0)
{
num -= 3;
answer++;
}
// 5로 나누어진다면 정답 출력
if (num % 5 == 0)
cout << answer + num / 5;
else
cout << -1;
}
만약 입력값이 14라고 한다면...
input => 14
(5로 나누어질 때까지 3으로 빼기)
1 11
2 8
3 5
answer =>
3+5/5
4
또 입력값이 7이라고 한다면...
input => 7
(5로 나누어질 때까지 3으로 빼기)
1 4
2 1
3 -2
(-2%5 != 1)이므로...
answer =>
-1
4
간단하고 재미있는 문제이다!
전에 풀었던 문제를 좀 더 효율적이고 예쁘게 풀어서 기분이 좋았다.
728x90
반응형
'알고리즘 문제풀이 > 동적 프로그래밍' 카테고리의 다른 글
[백준][C++] 17626 Four Squares (0) | 2022.11.03 |
---|---|
[백준][C++] 9655 돌 게임 (0) | 2022.11.03 |
[백준][C++] 1010 다리 놓기 (0) | 2022.11.03 |
[백준][C++] 2748 피보나치 수 2 (0) | 2022.11.03 |
[백준][C++] 10870 피보나치 수 5 (0) | 2022.11.03 |