반응형
Buying a Car
문제
특정 가격의 차를 사기 위해서, 내가 저축하는 돈과 내가 현재 가진 차의 가격을 고려하였을 때, 차를 구입하기위해서 기간이 얼마나 걸릴 지 계산한다
나의 풀이
이 문제를 제 시간에 풀지 못하였다.
내가 이 문제를 풀지 못한 이유는
- 문제 자체 이해를 잘 못하였다.
- 단계별로 어떻게 계산해 나가야할지 파악하지 못하였다
- 숫자 배열 및 나머지 다루는데 미숙하다
다른 사람의 풀이
Best practice
def nbMonths(old, new, saving, loss):
for i in range(9999):
if saving * i + old >= new:
break
if i % 2 == 1:
loss += 0.5
old = old * (100 - loss) / 100
new = new * (100 - loss) / 100
return [i, round(saving * i + old - new)]
- 이 풀이는 크게 3개의 파트로 나누어서 풀이한다
- 무한 루프의 break 조건
- 새차 가격 보다, 현재 내가 가지고 있는 차와 저축한 금액이 같거나 클 때
- 홀수 번째 마다 loss 율은 0.5 씩 증가한다
- 예전 차값과 현재 차값을 계산하는 부분
- 위 loss 율에 예전 차값과 / 새 차값은 모두 영향을 받는다
- 무한 루프의 break 조건
- 아래 조건이 루프를 통해서 동작하다가 조건이 맞으면, 값을 리턴한다
Clever
def nbMonths(old, new, saving, percent):
month = 0
while old - new + saving * month < 0:
month += 1
devalue = (100.0 - percent - 0.5 * (month / 2)) / 100.0
old *= devalue
new *= devalue
return [month, round(old - new + saving * month)]
- 이 문제도 위와 마찬가지 로직을 따른다, 다른 점은 loss 계산 하는 부분이 조금 다르다는 것인데, 위 문제보다는 딱 명확하게 코드가 보이진 않는다
회고
잘한 점
- 딱히 없음
부족한 점
- 이런 문제를 풀 때는 step by step으로 어떻게 문제를 풀 수 있을지 먼저 다 풀어본 이후에 코딩하는 것이 올바른 방법 같다
- 사실 위와 같이 풀었지만, 이런 종류의 문제가 나왔을 때 푸는 역량이 아직 많이 미숙하다
Action Item
- 이와 비슷한 문제를 풀 때, step by step으로 먼저 잘 정의한 후에 문제를 풀어보자
반응형
'개발 > CodeWars 문제 회고' 카테고리의 다른 글
[python ] 6kyu Unary function chainer (0) | 2021.01.24 |
---|---|
[javascript] Generate range of integers (0) | 2021.01.04 |
Regex Failure - Bug Fixing #2 (0) | 2020.12.20 |