MUKER_DEV with iOS

[swift] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 점프와 μˆœκ°„ 이동 λ³Έλ¬Έ

πŸ€– μ•Œκ³ λ¦¬μ¦˜/programmers

[swift] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 점프와 μˆœκ°„ 이동

MUKER 2023. 3. 3. 15:47
 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ 맀칭. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 맀칭 λ°›μœΌμ„Έμš”.

programmers.co.kr


 

λ‚˜μ˜ 풀이

func solution(_ n:Int) -> Int {
    var count = 0, i = n
    while i > 0 {
        if i % 2 == 1 { count += 1 }
        i /= 2
    }
    return count
}

 

쒋은 아이디어가 μƒκ°λ‚˜μ§€ μ•Šμ•„μ„œ 계속 헀맀닀

끝내 κ²€μƒ‰ν•΄μ„œ ν’€μ—ˆλ‹€.

 

λ¬Έμ œλŠ” μ΅œμ†Œν•œμ˜ λ°°ν„°λ¦¬λ§Œ μ‚¬μš©ν•˜μ—¬ μ›ν•˜λŠ” λͺ©μ μ§€κΉŒμ§€ κ°€κΈΈ λ°”λž€λ‹€.

거리 1만큼 배터리 1이 μ†Œλͺ¨λ˜λŠ”데

μˆœκ°„μ΄λ™μ„ ν•˜λ©΄ 배터리가 μ†Œλͺ¨λ˜μ§€ μ•ŠλŠ”λ‹€

μˆœκ°„μ΄λ™μ˜ 쑰건은 μ§€λ‚˜μ˜¨ 거리의 *2λ₯Ό 갈 λ•Œμ΄λ‹€.

μ§€λ‚˜μ˜¨ 거리가 3이라면 6κΉŒμ§€ μˆœκ°„μ΄λ™

12라면 24κΉŒμ§€ μˆœκ°„μ΄λ™ ν•  수 μžˆλ‹€.

 

μ§€λ‚˜μ˜¨ 거리의 *2라면

2의 λ°°μˆ˜λŠ” 무쑰건 μˆœκ°„μ΄λ™μ„ ν•  수 μžˆμ§€ μ•Šλ‚˜?

즉, 2의 배수λ₯Ό μˆœκ°„μ΄λ™ν•˜λ©΄ μ΅œμ†Œν•œμ˜ λ°°ν„°λ¦¬λ§Œ μ†Œλͺ¨ν•  수 μžˆμ§€ μ•Šμ„κΉŒ..?

 

이게 무슨 말이냐면

 

6의 거리만큼 κ°€μ•Ό ν•  λ•Œ

0 ~ 1 배터리 μ†Œλͺ¨

1 ~ 2 μˆœκ°„μ΄λ™

2 ~ 3 배터리 μ†Œλͺ¨

3 ~ 6 μˆœκ°„μ΄λ™

λΌλŠ” 식이 μ„Έμ›Œμ§„λ‹€.

 

 

μœ„ 식을 λ„μΆœν•˜κΈ° μœ„ν•΄μ„ 

κ°€μ•Ό ν•˜λŠ” κ±°λ¦¬μ—μ„œλΆ€ν„° / 2μ”© λ‚˜λˆ 

짝수라면 μˆœκ°„μ΄λ™

ν™€μˆ˜λΌλ©΄ 점프(λ°°ν„°λ¦¬μ†Œλͺ¨)λ₯Ό ν•˜κ²Œ λœλ‹€.

 

μž„μ˜μ˜ 숫자둜 43만큼의 거리λ₯Ό μ΅œμ†Œν•œμ˜ μ ν”„λ‘œ κ°€μ•Ό ν•œλ‹€λ©΄

43λΆ€ν„° λ‚˜λˆ„κΈ° 2λ₯Ό λ°˜λ³΅ν•˜μ—¬

 

43 (ν™€μˆ˜, λ°°ν„°λ¦¬μ†Œλͺ¨)

21 (ν™€μˆ˜, λ°°ν„°λ¦¬μ†Œλͺ¨)

10 (짝수)

5 (ν™€μˆ˜, λ°°ν„°λ¦¬μ†Œλͺ¨)

2 (짝수)

1 (ν™€μˆ˜, λ°°ν„°λ¦¬μ†Œλͺ¨)

0

 

총 4번의 μ ν”„λ§ŒμœΌλ‘œ 43κΉŒμ§€ 갈 수 μžˆλ‹€.