본문 바로가기
전공/coding test

코딩테스트 1 - 런타임 에러란

by import ysy 2022. 3. 29.

오늘은 내가 처음 풀어본 코딩 테스트 후기다.

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

처음에 아래처럼 풀었는데 런타임 에러가 떴다.

def solution(price, money, count):
    answer = (price * total_count(count)) - money
    return max(0,answer)

def total_count(count):
    if(count == 1):
        return 1
    else:
        return total_count(count-1) + count

런타임에러란, 코드가 충분히 효율적이지 않아서 실행시간이 초과되었다는 뜻이다.
그래서 보다 간결한 코드가 필요하다.
아마도 재귀함수를 사용해서 그런가보다.

그런데 문제를 풀 당시에는 런타임 에러를 생각못하고
data type이 문제인 줄 알았다….
python을 사용하면서 data type을 고려하다니.
아무튼 python3에는 long type이 없기 때문에  float type으로 강제형변환하여
다시 코드를 재작성하는 뻘짓을 했다.

약 30분 뒤 잘못을 깨닫고 알고리즘 자체를 바꾸어줬다.

def solution(price, money, count):
    total_count = count * (count + 1) * 0.5
    answer = (price * total_count) - money
    return max(0,answer)

이렇게 간결한 것을…ㅎㅎ 보기 좋다.

그런데 다 풀고 다른 사람 코드를 보니 훨씬 간결한 코드가 있었다.

def solution(price, money, count):
    return max(0,price*(count+1)*count//2-money)

대단하다.. 그렇지만 내 것도 충분히 간결하다. 흥

반응형

댓글