알고리즘

<백준> 2805번 파이썬 알고리즘

changha. 2021. 7. 9. 15:37
n = int(input())
k = n % 5 ## 5로 나눈다음 나머지
l = n // 5 ## 5로 나눈 몫
t = 0 ## 3의 개수
while l >= 0:
    if k % 3 == 0:
        t = k // 3
        k = k % 3
        break
    
    k += 5
    l -= 1
if k == 0:
    print(l + t)
else:
    print(-1)

1. 5의 배수로 나눔

2. 나머지가 3으로 나뉘는 지 확인

 2-1) 나뉠때 ==> t 에 3의 갯수 저장, k 갱신 

 2-2) 나뉘지 않을 때 ==> 나머지에 5를 더하고 몫에서 -1을 한다 

3. 반복 

4. 결과

 4-1)만약 k가 0이 아니면 3으로 나뉘지 않았으므로 -1 출력 

 4-2) k가 0이면 3으로 나뉘었으니 l + t 출력 

 

더 자세히 설명한 블로그 

https://s0ng.tistory.com/entry/%EB%B0%B1%EC%A4%80-%EA%B7%B8%EB%A6%AC%EB%94%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%84%A4%ED%83%95-%EB%B0%B0%EB%8B%AC-2839%EB%B2%88-%ED%8C%8C%EC%9D%B4%EC%8D%AC-python