http://acmicpc.net/problem/2839
{코드}
n = int(input())
cnt = 0
while True:
if n % 5 == 0:
print(cnt + n // 5)
break
n -= 3
cnt += 1
if n < 0:
print(-1)
break
{설명}
먼저 위 코드를 이해하려면 당연하지만 이 부등식이 성립함을 알아햐 합니다. 15//3 > 15//5
굉장히 당연한 식인데요, 이를 이용해 5의 배수가 될때까지 3을 계속해서 빼주면 세 가지의 경우 중 하나가 발생합니다.
-
n이 5의 배수인 경우 - 이때는 n을 5로 나눈 몫과 현재 봉지의 개수를 더한 값을 출력함
-
n이 0인 경우 - 이때도 n을 5로 나눈 나머지가 0이므로 결과적으로 봉지의 개수 출력
-
n이 0보다 작은 경우 - 이때는 3과 5로는 만들 수 없다는 뜻이므로 -1 출력
'알고리즘 공부 > BOJ백준 풀이' 카테고리의 다른 글
[백준 1193번-파이썬/Python] 분수 찾기 (0) | 2020.10.17 |
---|---|
[백준 2292번-파이썬/Python] 벌집 (0) | 2020.10.15 |
[백준 1712번-파이선/Python] 손익분기점 (0) | 2020.10.15 |
[백준 1316번-파이썬/Python] 그룹 단어 체커 (0) | 2020.10.14 |
[백준 2941번-파이썬/Python] 크로아티아 알파벳 (0) | 2020.10.14 |