λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“– Problem Solution/Programmers

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

by Fomagran πŸ’» 2020. 10. 16.
728x90
λ°˜μ‘ν˜•
 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - 점프와 μˆœκ°„ 이동

OO μ—°κ΅¬μ†ŒλŠ” ν•œ λ²ˆμ— K 칸을 μ•žμœΌλ‘œ μ ν”„ν•˜κ±°λ‚˜, (ν˜„μž¬κΉŒμ§€ 온 거리) x 2 에 ν•΄λ‹Ήν•˜λŠ” μœ„μΉ˜λ‘œ μˆœκ°„μ΄λ™μ„ ν•  수 μžˆλŠ” νŠΉμˆ˜ν•œ κΈ°λŠ₯을 가진 아이언 슈트λ₯Ό κ°œλ°œν•˜μ—¬ νŒλ§€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 아이언 슈�

programmers.co.kr

 

Foma's 풀이

λ¬Έμ œμ„€λͺ…

 

점프 1칸이동                             κ±΄μ „지 μ†Œλͺ¨ 1

 

μˆœκ°„μ΄λ™ ν˜„μž¬κΉŒμ§€ 온거리의 *2  건전지 μ†Œλͺ¨ 0

 

이 λ¬Έμ œλŠ” 주어진 NλΆ€ν„° 0κΉŒμ§€ λ°˜λŒ€λ‘œ μ΄λ™ν•΄μ•Όν•©λ‹ˆλ‹€.

 

즉 μ ν”„λŠ” -1 μˆœκ°„μ΄λ™μ€ λ‚˜λˆ„κΈ° 2κ°€ λ©λ‹ˆλ‹€.

 

건전지 μ†Œλͺ¨λ₯Ό μ΅œμ†Œλ‘œ ν•˜κΈ°μœ„ν•΄ μ΅œλŒ€ν•œ μˆœκ°„μ΄λ™μœΌλ‘œ μ΄λ™ν•΄μ•Όν•˜μ§€λ§Œ

 

μ–΄μ©” 수 없이 점프λ₯Ό μ‚¬μš©ν•΄μ•Όν•  μˆœκ°„μ΄ μ–Έμ œμΌκΉŒμš”?

 

λ°”λ‘œ 주어진 NλΆ€ν„° 0κΉŒμ§€ 갈 λ•ŒκΉŒμ§€ μ°¨λ‘€λ‘œ 반으둜(2둜) λ‚˜λˆ„μ—ˆμ„ λ•Œ ν™€μˆ˜κ°€ 됐을 λ•Œ μž…λ‹ˆλ‹€.

 

μ˜ˆμ‹œλ‘œ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

λ§Œμ•½ N이 5라면 5λŠ” μ‹œμž‘λΆ€ν„° ν™€μˆ˜μ΄λ―€λ‘œ 2둜 λ‚˜λˆŒμˆ˜κ°€ μ—†μœΌλ―€λ‘œ 점프λ₯Ό μ‚¬μš©ν•΄ 1만큼 μ΄λ™ν•©λ‹ˆλ‹€. -> 4(점프 μ‚¬μš© +1)

 

그리곀 μˆœκ°„μ΄λ™μ„ μ‚¬μš©ν•΄ 2둜 λ‚˜λˆ„μ–΄μ€λ‹ˆλ‹€. -> 2 (μˆœκ°„μ΄λ™)

 

2λŠ” ν™€μˆ˜κ°€ μ•„λ‹ˆλ―€λ‘œ 또 μˆœκ°„μ΄λ™μœΌλ‘œ μ΄λ™ν•©λ‹ˆλ‹€. -> 1 ( μˆœκ°„μ΄λ™)

 

1은 ν™€μˆ˜μ΄λ―€λ‘œ μˆœκ°„μ΄λ™μ„ μ‚¬μš©ν•  μˆ˜κ°€ μ—†μŠ΅λ‹ˆλ‹€. 고둜 점프λ₯Ό μ‚¬μš©ν•΄ 1만큼 μ΄λ™ν•©λ‹ˆλ‹€. -> 0 (점프 μ‚¬μš© + 1)

 

그러면 총 점프λ₯Ό 2번 μ‚¬μš©ν•˜μ˜€μœΌλ―€λ‘œ 건전지 μ†Œλͺ¨λŠ” 2κ°€ λ©λ‹ˆλ‹€.

 

μ½”λ“œμ„€λͺ…

λ‚˜λˆ„μ–΄μ§€λŠ” nκ³Ό 건전지 μ†Œλͺ¨λ₯Ό μ €μž₯ν•  answer λ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄μ€λ‹ˆλ‹€. ->  var devideN = n

    var answer = 0

 

그리고 while문을 μ‚¬μš©ν•˜μ—¬ λ‚˜λˆ„μ–΄μ§€λŠ” n이 0이 λ λ•ŒκΉŒμ§€ λ°˜λ³΅ν•΄μ€λ‹ˆλ‹€. ->  while devideN != 0 {...}

 

n을 2둜 λ‚˜λˆ„μ—ˆμ„ λ•Œ(devideN) ν™€μˆ˜κ°€ λ˜λŠ” 것 즉 %2 κ°€ 1이 λ˜μ—ˆμ„ λ•Œ answer(건전지 μ‚¬μš©)을 1 λ”ν•΄μ€λ‹ˆλ‹€. -> if devideN%2 == 1 {

            answer += 1

        }

 

그리고 n을 2둜 λ‚˜λˆ„μ–΄μ€λ‹ˆλ‹€.(devideN) μ •μˆ˜λ₯Ό 2둜 λ‚˜λˆ„λ©΄ ν™€μˆ˜λΌλ„ μ†Œμˆ˜μžλ¦¬κ°€ μ—†μ–΄μ§€λ―€λ‘œ -1을 λ”°λ‘œ 해쀄 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. -> devideN = devideN/2

 

λ§ˆμ§€λ§‰μœΌλ‘œ answer(건전지 μ‚¬μš©)을 λ°˜ν™˜ν•΄μ€λ‹ˆλ‹€. ->  return answer

 

μ „μ²΄μ½”λ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import Foundation
 
func solution(_ n:Int-> Int
{
    var devideN = n
    var answer = 0
    
    while devideN != 0 {
        if devideN%2 == 1 {
            answer += 1
        }
        devideN = devideN/2
    }
    
    return answer
}

 

 

728x90
λ°˜μ‘ν˜•

λŒ“κΈ€