2Ju0
Ju0.log
2Ju0
전체 방문자
오늘
어제
  • 🐱‍🚀 모두보기 (32)
    • CS (18)
      • LLVM (11)
      • 운영체제 (1)
      • 보안 (3)
      • 프로그래밍언어 (0)
      • 데이터과학 (3)
    • PL (1)
      • Python (1)
      • JavaScript (0)
    • Algorithm (12)
      • Python (0)
      • Javascript (12)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
2Ju0

Ju0.log

[Programmers] 점프와 순간 이동 - JavaScript
Algorithm/Javascript

[Programmers] 점프와 순간 이동 - JavaScript

2023. 4. 28. 22:37

문제

 

프로그래머스

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

programmers.co.kr

내 풀이

function solution(n) {
    if(n === 1) return 1;
    if(n % 2 === 0) return solution(n / 2);
    else return solution((n - 1) / 2) + 1;
}

건전지 사용량을 최소화하려면 최대한 순간이동을 많이 해야한다. 그래서 이동해야하는 위치 n이 짝수인지, 홀수인지에 따라 나눠 처리하도록 했다. 

위치 n이 짝수인 경우

  • 예를 들어, n이 8이라면 처음위치인 0→1 한칸 점프, 1→2 순간이동, 2→4 순간이동, 4→8 순간이동하는 방법으로 건전지 사용량을 최소화 할 수 있다.
  • 다시 생각해보면, 위치 8로 이동하기 까지의 건전지 사용량과 위치 4로 이동하기 까지의 건전지 사용량은 같다. 왜냐면 (현재 위치 x 2)의 위치로 이동하는 순간이동은 건전지를 사용하지 않기 때문이다.
  • 그렇다면, 위치 8로 이동해야 한다면 위치 4로 이동하는 방법을 생각해보면 되고, 위치 4로 이동해야한다면 위치 2로, 위치 2로 이동해야한다면 위치 1로 이동하는 방법을 재귀적으로 생각해보면 된다.

위치 n이 홀수인 경우

  • n이 홀수라고해서 방법은 달라지지 않는다. 다만, 무조건 한 칸은 순간이동이 아닌 점프를 해야한다.

풀이과정을 쓸 때마다 생각하는 거지만, 내가 머리로 생각한 과정을 글로 풀어쓰기가 어려운 것같다. 당연하게 혹은 자연스럽게 들었던 생각을 논리적으로 작성하는게 생각보다 귀찮고, 또 잘 쓴다는 것 자체가 어렵다. 그치만 귀찮아서 안하는 건 이제 고쳐야겠다!

저작자표시 비영리 변경금지 (새창열림)
    'Algorithm/Javascript' 카테고리의 다른 글
    • [Programmers] 스킬트리 - JavaScript
    • [Programmers] 기능개발 - JavaScript
    • [Programmers] N개의 최소공배수 - JavaScript
    • [Programmers] 캐시 - JavaScript
    2Ju0
    2Ju0

    티스토리툴바