전에 이 문제를 푼 기억이 난다. 백준이란 사이트를 알고 한번 풀어봐야지 했는데, 기초문제에 이 문제가 있어서 놀랬다. 왜냐면 이 날 수업시간에 그리디란 개념을 배웠는데 보자마자 이거 그리디 아녀 싶었음. 그래서 어려운 기초 문제에 대한 배신감과 풀었다는 뿌듯함이 교차했었다.
알고보니 그거 안 써도 됐었다! 연세대 문제랑 양념치킨을 풀고 나니 이것도 그렇게 풀면 되겠다 싶었다. 그래서 일단 k를 고정시켜놓고 거기에 맞춰 l값을 구한 후 합의 최솟값을 구하면 된다! 여기서 i가 k값이다. 로직에 k는 다 i라 생각하면 된다. 또 지금 생각났는데 k보다 l을 기준으로 풀면 반복 횟수를 줄일 수 있을 것 같다.
중간에 한 번 틀렸었는데 MAX값을 작게 잡은게 문제였다. 999를 9999로 올리니 해결됐다.
#include <iostream>
#define MAX 9999
int main() {
int n, min = MAX, l;
scanf("%d", &n);
for(int i = 0; i <= n/3; i++){
if((n-3*i)%5 == 0){
l = (n-3*i) / 5;
if((l + i) < min)
min = l + i;
}
}
if(min == MAX)
printf("-1");
else
printf("%d", min);
}
'백준' 카테고리의 다른 글
4673 셀프 넘버 (0) | 2019.10.12 |
---|---|
1110 더하기 사이클 (0) | 2019.10.11 |
5586 JOI와 IOI (0) | 2019.10.11 |
11718 그대로 출력하기 (0) | 2019.10.11 |
1373 2진수 8진수 (0) | 2019.10.09 |