본문 바로가기
코테연습

158. 점프와 순간 이동 Javascript

by hxunz 2022. 9. 18.

https://school.programmers.co.kr/learn/courses/30/lessons/12980

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제에 대한 이해

  • 우리가 풀어야 할 문제는 무엇인가?
     - 아이언 슈트 구매자가 이동하려는 거리 N이 주어졌을 때, 사용해야 하는 건전지 사용량의 최솟값을 return
  • 주어진 자료는 무엇인가?
     - 한 번에 K 칸을 앞으로 점프
     - (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동
     - 순간이동을 하면 건전지 사용량이 줄지 않지만, 앞으로 K 칸을 점프하면 K 만큼의 건전지 사용량이 듭니다. 
  • 조건은 무엇인가?
     -
    숫자 N: 1 이상 10억 이하의 자연수
     - 숫자 K: 1 이상의 자연수

2. 계획

  1. 주어진 숫자를 2로 나눌때
    1-1 나누어 떨어진다면 이 값을 가지고 다시 1번 실행
    1-2 나누어 떨어지지 않는다면 나누지 않고 -1을 하고 count+1 그리고 다시 1번 실행
  2. n이 0이 되면 count 값을 리턴한다. 

3. 실행

  • 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (n, count = 0) => {
  if (n === 0) {
    return count
  }
  if (n % 2 === 0) {
    return solution(n / 2, count)
  }
  if (n % 2 !== 0) {
    return solution(n - 1, count += 1)
  }
};

test('batteryCount', () => {
  expect(solution(5)).toEqual(2);
  expect(solution(6)).toEqual(2);
  expect(solution(5000)).toEqual(5);
});

 

'코테연습' 카테고리의 다른 글

160. 주차 요금 계산 Javascript  (0) 2022.09.19
159. 캐시 Javascript  (0) 2022.09.19
157. 예상 대진표 Javascript  (0) 2022.09.18
156. 행렬의 덧셈 Javascript  (0) 2022.09.18
155. 핸드폰 번호 가리기 Javascript  (0) 2022.09.18

댓글