boj 2839 c++ 설탕 배달

백준 2839 cpp 설탕 배달

 

N==4 일 때를 생각 못해서 계속 시간초과가 났다.

많아봐야 3 * 1600번 가량밖에 연산하지 않는 코드가 왜 시간초과가 나는 건지 생각하다 하마터면 bfs 코드로 옮길 뻔했다.

 

아이디어:

  1. 5로 나눠지나요? yes: N = 0; bagCount += N / 5
  2. 3으로 나눠지나요? yes: N -= 3
  3. 5보다 큰가요? yes: N -= 5
  4. N이 4인가요? yes: break;
  5. N이 2보다 작나요? yes: break; - while문의 조건.

 

#include <bits/stdc++.h>
using namespace std;


int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);

    int N;
    cin >> N;
    int bagCount = 0;
    while (N >= 3)
    {
        if (N % 5 == 0){
            bagCount += N / 5;
            N = 0;
        }
        else if (N % 3 == 0)
        {
            N -= 3;
            bagCount++;
        }
        else if (N >= 5)
        {
            N -= 5;
            bagCount++;
        }
        if (N == 4)
            break;
    }
    if (N != 0)
        cout << "-1";
    else
        cout << bagCount;
}

 

'Algorithm' 카테고리의 다른 글

boj 4153 직각삼각형 c++  (0) 2020.11.27
boj 2869 c++ 달팽이는 올라가고 싶다  (0) 2020.11.26
boj 2798 c++ 블랙잭  (0) 2020.11.23
boj 2775 c++ 부녀회장이 될테야  (0) 2020.11.20
BOJ 2751 C++ 수 정렬하기 2  (0) 2020.11.19
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom