걸림돌
- 봉지의 최소 개수를 구해야하기 때문에 최소 봉지 수를 구하는 기능 구현이 어려웠다
while n >= 0:
if n%5 == 0:
count += n // 5
print(count)
break
n -= 3
count += 1
5로 나눈 나머지가 0일 경우, count에 n을 5로 나눈 값을 더하고 count 값을 print한다.
이는 예를 들어 n에 18을 입력받은 경우, 18은 5로 나누어 떨어지지 않기 때문에 if문을 무시하고 `n -= 3` 코드로 넘어가게 되고, 18에 3을 빼면 15가 되기 때문에 15는 5로 나누어 떨어지게 된다.
그렇다면 이번에는 if문에 들어가서 15를 5로 나눈 나머지 값을 count에 더한 후 print된다.
즉 15-3 과정에서 count에 +1이 되었고, 15 // 5 과정에서 count에 +3이 되기 때문에 count는 4로 print 될 것이다.
- 3과 5로 나누어 떨어지지 않는 경우 -1을 출력해야하는데 이 경우를 어떻게 고려할 것인지 구현하는데 어려웠다
- -> 예를 들어 n에 4를 입력받는 경우, 4는 5로 나눈어 떨어지지 않기 때문에 if문을 무시하고 바로 `n -= 3` 코드로 가게 되고 n-3한 값을 n에 대입하기 때문에 한 바퀴 돌았을 때 n은 1이 된다. 그리고 위와 같은 과정을 한 번 더 돌게되면 n은 두 바퀴 째에 -2가 되기 때문에 while문의 조건에 맞지 않아 else로 가게 되어 -1을 print 하게 된다.
코드
n = int(input())
count = 0
while n >= 0:
if n%5 == 0:
count += n // 5
print(count)
break
n -= 3
count += 1
else:
print(-1)
n에 입력받은 숫자가 while문의 조건을 만나서
만약 0보다 크다면 if문으로 넘어가게 된다.
그리고 if문의 조건을 만나서 n이 5로 나누어지지 않는다면,
n -= 3을 만나 n에서 -3 한 값을 다시 n에 대입하게 되고, count에 +1을 해준다.
위 과정을 한 바퀴 돌고 다시 한 번 while문으로 가게되고, 같은 과정을 반복하며 count를 올리게된다.
'BeakJoon > Python' 카테고리의 다른 글
[Python] 백준 #10773 : 제로 (0) | 2023.11.28 |
---|---|
[Python] 백준 #11399 : ATM (0) | 2023.11.28 |
[Python] 백준 #1271번 : 엄청난 부자2 (0) | 2023.11.11 |
[Python] 백준 #2751번 : 수 정렬하기 2 (1) | 2023.11.11 |
[Python] 백준 #2941번 : 크로아티아 알파벳 [S-V] (1) | 2023.11.09 |