Jieunny의 λΈ”λ‘œκ·Έ

[JS] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 점프와 μˆœκ°„μ΄λ™ λ³Έλ¬Έ

Study/Coding Test

[JS] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 점프와 μˆœκ°„μ΄λ™

Jieunny 2023. 2. 21. 17:12

πŸ“Œ  문제

OO μ—°κ΅¬μ†ŒλŠ” ν•œ λ²ˆμ— K 칸을 μ•žμœΌλ‘œ μ ν”„ν•˜κ±°λ‚˜, (ν˜„μž¬κΉŒμ§€ 온 거리) x 2 에 ν•΄λ‹Ήν•˜λŠ” μœ„μΉ˜λ‘œ μˆœκ°„μ΄λ™μ„ ν•  수 μžˆλŠ” νŠΉμˆ˜ν•œ κΈ°λŠ₯을 가진 아이언 슈트λ₯Ό κ°œλ°œν•˜μ—¬ νŒλ§€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 아이언 μŠˆνŠΈλŠ” κ±΄μ „μ§€λ‘œ μž‘λ™λ˜λŠ”λ°, μˆœκ°„μ΄λ™μ„ ν•˜λ©΄ 건전지 μ‚¬μš©λŸ‰μ΄ 쀄지 μ•Šμ§€λ§Œ, μ•žμœΌλ‘œ K 칸을 μ ν”„ν•˜λ©΄ K 만큼의 건전지 μ‚¬μš©λŸ‰μ΄ λ“­λ‹ˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ 아이언 슈트λ₯Ό μ°©μš©ν•˜κ³  이동할 λ•ŒλŠ” μˆœκ°„ 이동을 ν•˜λŠ” 것이 더 νš¨μœ¨μ μž…λ‹ˆλ‹€. 아이언 슈트 κ΅¬λ§€μžλŠ” 아이언 슈트λ₯Ό μ°©μš©ν•˜κ³  거리가 N 만큼 λ–¨μ–΄μ Έ μžˆλŠ” μž₯μ†Œλ‘œ κ°€λ €κ³  ν•©λ‹ˆλ‹€. 단, 건전지 μ‚¬μš©λŸ‰μ„ 쀄이기 μœ„ν•΄ μ ν”„λ‘œ μ΄λ™ν•˜λŠ” 것은 μ΅œμ†Œλ‘œ ν•˜λ €κ³  ν•©λ‹ˆλ‹€. 아이언 슈트 κ΅¬λ§€μžκ°€ μ΄λ™ν•˜λ €λŠ” 거리 N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 건전지 μ‚¬μš©λŸ‰μ˜ μ΅œμ†Ÿκ°’μ„ returnν•˜λŠ” solution ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ μ£Όμ„Έμš”.

예λ₯Ό λ“€μ–΄ 거리가 5만큼 λ–¨μ–΄μ Έ μžˆλŠ” μž₯μ†Œλ‘œ κ°€λ €κ³  ν•©λ‹ˆλ‹€.
아이언 슈트λ₯Ό μž…κ³  거리가 5만큼 λ–¨μ–΄μ Έ μžˆλŠ” μž₯μ†Œλ‘œ 갈 수 μžˆλŠ” 경우의 μˆ˜λŠ” μ—¬λŸ¬ κ°€μ§€μž…λ‹ˆλ‹€.

  • 처음 μœ„μΉ˜ 0 μ—μ„œ 5 칸을 μ•žμœΌλ‘œ μ ν”„ν•˜λ©΄ λ°”λ‘œ λ„μ°©ν•˜μ§€λ§Œ, 건전지 μ‚¬μš©λŸ‰μ΄ 5 만큼 λ“­λ‹ˆλ‹€.
  • 처음 μœ„μΉ˜ 0 μ—μ„œ 2 칸을 μ•žμœΌλ‘œ μ ν”„ν•œ λ‹€μŒ μˆœκ°„μ΄λ™ ν•˜λ©΄ (ν˜„μž¬κΉŒμ§€ 온 거리 : 2) x 2에 ν•΄λ‹Ήν•˜λŠ” μœ„μΉ˜λ‘œ 이동할 수 μžˆμœΌλ―€λ‘œ μœ„μΉ˜ 4둜 μ΄λ™ν•©λ‹ˆλ‹€. μ΄λ•Œ 1 칸을 μ•žμœΌλ‘œ μ ν”„ν•˜λ©΄ λ„μ°©ν•˜λ―€λ‘œ 건전지 μ‚¬μš©λŸ‰μ΄ 3 만큼 λ“­λ‹ˆλ‹€.
  • 처음 μœ„μΉ˜ 0 μ—μ„œ 1 칸을 μ•žμœΌλ‘œ μ ν”„ν•œ λ‹€μŒ μˆœκ°„μ΄λ™ ν•˜λ©΄ (ν˜„μž¬κΉŒμ§€ 온 거리 : 1) x 2에 ν•΄λ‹Ήν•˜λŠ” μœ„μΉ˜λ‘œ 이동할 수 μžˆμœΌλ―€λ‘œ μœ„μΉ˜ 2둜 μ΄λ™λ©λ‹ˆλ‹€. μ΄λ•Œ λ‹€μ‹œ μˆœκ°„μ΄λ™ ν•˜λ©΄ (ν˜„μž¬κΉŒμ§€ 온 거리 : 2) x 2 만큼 이동할 수 μžˆμœΌλ―€λ‘œ μœ„μΉ˜ 4둜 μ΄λ™ν•©λ‹ˆλ‹€. μ΄λ•Œ 1 칸을 μ•žμœΌλ‘œ μ ν”„ν•˜λ©΄ λ„μ°©ν•˜λ―€λ‘œ 건전지 μ‚¬μš©λŸ‰μ΄ 2 만큼 λ“­λ‹ˆλ‹€.

μœ„μ˜ 3가지 경우 거리가 5만큼 λ–¨μ–΄μ Έ μžˆλŠ” μž₯μ†Œλ‘œ κ°€κΈ° μœ„ν•΄μ„œ 3번째 κ²½μš°κ°€ 건전지 μ‚¬μš©λŸ‰μ΄ κ°€μž₯ μ μœΌλ―€λ‘œ 닡은 2κ°€ λ©λ‹ˆλ‹€.

μ œν•œ 사항
  • 숫자 N: 1 이상 10μ–΅ μ΄ν•˜μ˜ μžμ—°μˆ˜
  • 숫자 K: 1 μ΄μƒμ˜ μžμ—°μˆ˜

 

πŸ’‘  아이디어

n이 짝수인 경우, ν™€μˆ˜μΈ 경우λ₯Ό λ‚˜λˆ μ„œ 0μ—μ„œ λΆ€ν„° μ‹œμž‘ν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ nμ—μ„œ λΆ€ν„° μ‹œμž‘ν•΄μ„œ 0으둜 μ˜€λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν–ˆλ‹€.

n이 짝수이면 2둜 λ‚˜λˆ μ„œ μˆœκ°„μ΄λ™ ν•˜λ―€λ‘œ 건전지 μ‚¬μš©λŸ‰μ€ λŠ˜μ§€ μ•Šκ³ , n이 ν™€μˆ˜λ©΄ -1ν•΄μ€˜μ„œ 건전지 μ‚¬μš©λŸ‰μ„ +1 ν•΄μ€€ λ‹€μŒμ— μ§μˆ˜κ°€ 된 n을 λ‹€μ‹œ 2둜 λ‚˜λˆ μ„œ μˆœκ°„μ΄λ™ ν•œλ‹€.

n이 0이 λ λ•ŒκΉŒμ§€ 이 과정을 λ°˜λ³΅ν•œλ‹€.

 

✏️  풀이

function solution(n){
    var ans = 0;

    while(n !== 0){
      if(n % 2 === 0){
        n /= 2;
      }
      else {
        ans++;
        n--;
      }
    }

    return ans;
}