본문 바로가기

백준

2839 설탕 배달

전에 이 문제를 푼 기억이 난다. 백준이란 사이트를 알고 한번 풀어봐야지 했는데, 기초문제에 이 문제가 있어서 놀랬다. 왜냐면 이 날 수업시간에 그리디란 개념을 배웠는데 보자마자 이거 그리디 아녀 싶었음. 그래서 어려운 기초 문제에 대한 배신감과 풀었다는 뿌듯함이 교차했었다. 

 

알고보니 그거 안 써도 됐었다! 연세대 문제랑 양념치킨을 풀고 나니 이것도 그렇게 풀면 되겠다 싶었다. 그래서 일단 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