본문 바로가기

개발/CodeWars 문제 회고

Buying a Car

반응형

Buying a Car

문제

특정 가격의 차를 사기 위해서, 내가 저축하는 돈과 내가 현재 가진 차의 가격을 고려하였을 때, 차를 구입하기위해서 기간이 얼마나 걸릴 지 계산한다

나의 풀이

이 문제를 제 시간에 풀지 못하였다.

내가 이 문제를 풀지 못한 이유는

  1. 문제 자체 이해를 잘 못하였다.
  2. 단계별로 어떻게 계산해 나가야할지 파악하지 못하였다
  3. 숫자 배열 및 나머지 다루는데 미숙하다

다른 사람의 풀이

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개의 파트로 나누어서 풀이한다
    1. 무한 루프의 break 조건
      • 새차 가격 보다, 현재 내가 가지고 있는 차와 저축한 금액이 같거나 클 때
    2. 홀수 번째 마다 loss 율은 0.5 씩 증가한다
    3. 예전 차값과 현재 차값을 계산하는 부분
      • 위 loss 율에 예전 차값과 / 새 차값은 모두 영향을 받는다
  • 아래 조건이 루프를 통해서 동작하다가 조건이 맞으면, 값을 리턴한다

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