전공/coding test

코딩테스트 4 - 포기한 문제

import ysy 2022. 4. 1. 15:55

아무리 그래도 고작 level 2를 4시간 잡고 있는 건 참 너무하다.
난 바보다.

문제: 프로그래머스 - (추가 예정)
난이도: level 2

나의 코드

def solution(n):
    answer = ""
    answer, i = cal(n)
    if i != 1:
        for k in range(i-1):
            n = n - pow(3,k)
        answer, i = cal(n-2)
        if i+1 != len(answer):
            answer = "0" + answer
    
    answer = answer.replace('2','4')
    answer = answer.replace('1','2')
    answer = answer.replace('0','1')

    reversed_str = "".join(reversed(answer))   
    return reversed_str

def cal(n):
    answer = ""
    n = n-1
    q = 100
    i = 0
    while q != 0:
        q,r = divmod(n,3)
        n = q
        answer = answer + str(r)
        i = i + 1 
        
    return answer, i


배운 점

가장 많이 시간이 걸린 부분은 pow 연산이 있는 줄에서 n이 음수가 되어 실행이 안되는 문제였다.
당연히 음수가 되면 안되고 알고리즘을 수정하여 잘 맞췄다.
if문이나 for문의 조건부는 괄호가 필요없는데, 오류완 상관이 없지만 이 부분도 주의해야 할 것 같다.

소감

위와 같은 코드를 완성하는 데에 그렇게 시간이 걸렸다.
알고리즘 자체를 비효율적이고 어렵게 푼 것 같다.
그런데 테스트 케이스는 겨우 통과했는데
제출하니까 빵점이었다.

안그래도 자학적 마음이 커져 있었는데 빵점을 보니 바로 포기할 수 있었다.
그리고 그 날 저녁엔 상심이 너무 커서 코딩 관련 내용은 단 하나도 보고 싶지 않았다.
난 바보다.

모범 답안은 다음에 확인할 것이다.
사실 너무 궁금하지만 나에게 화가 풀리고 나서 보고싶다…

반응형