본문 바로가기

개발/알고리즘

[프로그래머스] 기능 개발_Python

문제

https://programmers.co.kr/learn/courses/30/lessons/42586

 

정답 코드

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()에서 소수점 처리를 안해줬기 때문이다.

이 부분을 고치니까 정답으로 나오긴 한다.

 

생각

하지만 이러한 문제를 풀 때, 뭔가 지저분하게(?) 풀리는 느낌이고 그런 느낌이 들면 예외처리를 잘 못해주는 것 같다.

얼마 전 코테를 봤을 때도 똑같은 현상을 겪었다.

괄호 판별하기 문제.. 그렇게 간단한 문제를 완벽히 생각해내지 못한다니,, 뭐가 문제일까??

 

그리고 정답 코드를 보면, 다른 사람은 뭔가 더 깔끔하게 풀었다는 생각이 든다.

내가 어떤 부분을 놓치고 있는 걸까??

 

현재 상태에서 더 어려운 문제만을 푸는게 의미가 있을까?