전공/coding test
코딩테스트 1 - 런타임 에러란
import ysy
2022. 3. 29. 12:46
오늘은 내가 처음 풀어본 코딩 테스트 후기다.
문제: 프로그래머스 - (추가예정)
난이도: 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)
대단하다.. 그렇지만 내 것도 충분히 간결하다. 흥
반응형