문제

정답 코드
def solution(progresses, speeds):
result = []
time = 0
count = 0
while len(progresses) > 0:
if(progresses[0] + time * speeds[0]) >= 100:
progresses.pop(0)
speeds.pop(0)
count += 1
else:
if count > 0:
result.append(count)
count = 0
time += 1
result.append(count)
return result
내가 처음 틀린 코드
def up_num(a, b):
num1 = a / b
num2 = a // b
if num1 > num2:
return num1 + 1
else:
return num2
def solution(progresses, speeds):
day = up_num(100 - progresses[0], speeds[0])
cnt = 1
result = []
for i in range(1, len(progresses))
expect_day = up_num(100 - progresses[i], speeds[i])
if expect_day > day:
result.append(cnt)
day = expect_day
cnt = 1
else:
cnt += 1
result.append(cnt)
return result
틀린 이유
왜 틀렸을까,,,? 코드를 짜면서도 틀릴 거라고 생각했다.
이 문제를 풀면서 어려웠던 점은, 어떻게 풀어야 할지는 바로 그려지는데 예외처리 부분을 어떻게 해줘야 할지 헷갈리는 것이다.
우선 틀렸던 이유는 up_num()에서 소수점 처리를 안해줬기 때문이다.
이 부분을 고치니까 정답으로 나오긴 한다.
생각
하지만 이러한 문제를 풀 때, 뭔가 지저분하게(?) 풀리는 느낌이고 그런 느낌이 들면 예외처리를 잘 못해주는 것 같다.
얼마 전 코테를 봤을 때도 똑같은 현상을 겪었다.
괄호 판별하기 문제.. 그렇게 간단한 문제를 완벽히 생각해내지 못한다니,, 뭐가 문제일까??
그리고 정답 코드를 보면, 다른 사람은 뭔가 더 깔끔하게 풀었다는 생각이 든다.
내가 어떤 부분을 놓치고 있는 걸까??
현재 상태에서 더 어려운 문제만을 푸는게 의미가 있을까?
'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스] Level2_메뉴 리뉴얼 (0) | 2021.07.13 |
---|---|
[프로그래머스] Level2_타겟 넘버 (0) | 2021.07.06 |
[백준 / Python]LCS_9251 (0) | 2021.06.10 |
[백준 / Python] 욕심쟁이 판다_1937 (0) | 2021.06.07 |
[백준 / Python] 동전 1_2293 (0) | 2021.05.27 |