728x90
문제 (링크)
https://www.acmicpc.net/problem/2839
나의 풀이
n = int(input())
result = 0
while n % 5 != 0: #
n -= 3
if n < 0:
result = -1
break
result += 1
result += (n // 5) # n < 0일 때도 이 코드를 거쳐가서 오류 발생.
print(result)
n이 5의 배수가 될때까지 (while n%5 != 0) n에서 3을 빼주고 봉지 개수를 +1 해준다.
그러다가, n이 0보다 작아질 때는 정확히 n킬로그램을 만들 수 없는 것이므로 result = -1로 바꿔준다.
이렇게 풀어놓고 계속 통과하지 못해 뭐가 틀린거냐고 혼자 짜증나다가 Repl에서 입력된 테스트 케이스를 하나하나 쳐보던 중 n이 4일 때 -1이 아닌 -2가 출력되는 것을 확인할 수 있었다.
Visualize Python에서 해당 과정을 지켜보니 n <0 일때도 while문을 빠져나와 11번째 코드를 거쳐가 해당 오류가 발생한 것이었다.
요즘 알고리즘 공부할 때 계속 def로 함수를 정의하는 게 익숙해진 탓에 return을 쓴 것마냥 코드를 짰다.
혼자 짜증냈던 순간이 부끄러워졌던 순간이었다.
수정
n = int(input())
def sugar(n):
result = 0
while n % 5 != 0:
n -= 3
if n < 0:
return -1
result += 1
result += (n // 5)
return result
print(sugar(n))
그냥 해당 부분을 def로 정의해 return을 써주는 것으로 수정해 통과할 수 있었다.
'알고리즘 > 문제풀이' 카테고리의 다른 글
[백준] 11399번 ATM - 파이썬(Python) (0) | 2021.01.14 |
---|---|
[백준] 14916번 거스름돈 - 파이썬(Python) (0) | 2021.01.14 |
[프로그래머스] 오픈채팅방 / Python (0) | 2020.12.06 |
[프로그래머스] 최솟값 만들기 - Python (0) | 2020.12.06 |
[프로그래머스] Summer/Winter Coding(~2018) - 점프와 순간 이동 / python (0) | 2020.11.09 |