[Daily Post]는 매일매일 탐구한 내용을 간략하게 기록하는 포스트입니다.
따라서 정리되지 않은 내용과 추측을 포함하고 있을 수 있습니다.
더 체계적인 형식을 갖춘 글은 해당 카테고리의 포스트를 확인해주세요 :)

Daily Study

PS

2839. 설탕 배달

##N = int(input())

### 1. for_five
### 2. for_three
### 3. dividable
### 4. -1

def get_sugar(N):
    for_five = 999999
    for_three = 999999
    for_any = 999999

    tmp_N = N
    able_five = False
    able_three = False
    able_any = False

    cnt = 999999

    if(N % 5 == 0):
        for_five = N//5
        able_five == True
    elif(N % 3 == 0):
        for_three = N//3
        able_three == True

    while(N>=3):
        if(N % 5 == 0):
            N = 0
            cnt +=  N//5
        elif(N%3 == 0):
            N = 0
            cnt += N//3
        else:
            if(N>=3):
                if(N>=5):
                    N -= 5
                    cnt += 1
                else:
                    N -= 1
                    cnt += 1

    if(N==0): able_any = True

    print("[%d]: f:%d, t:%d, a:%d"%(tmp_N,for_five, for_three, cnt-999999))

def test_first():
    assert get_sugar(18) == 4

def test_second():
    assert get_sugar(4) == -1

def test_third():
    assert get_sugar(6) == 2

def test_forth():
    assert get_sugar(9) == 3

def test_fifth():
    assert get_sugar(11) == 3
  • 위와 같이 테스트 케이스도 작성해서 문제를 풀었는데, 브루트 포스라고 해서 만만하게 생각해서 그런가 생각보다 시간이 오래 걸린다.