Foma's νμ΄
λ¬Έμ νμ΄
μ΄ λ¬Έμ μ ν΅μ¬μ Aμ Bκ° λ§λκ² λμμ λμ κ·μΉμ μμλ΄λ κ²μ λλ€.
Aμ Bκ° λ§λκ² λ κ²½μ°λ Aμ B μ€ νμμ +1μ ν΄μ€ κ°μ λ°μΌλ‘ λλ μ€ κ°κ³Ό μ§μλ₯Ό λ°μΌλ‘ λλ μ€ κ°μ΄ κ°μ λμ λλ€.
μμλ‘ μμ보면 Aμ Bκ° λ§λκ² λ κ²½μ° 1λ²κ³Ό 2λ²μ΄λΌκ³ κ°μ νμμ λ νμ -> 1μ 1μ λν΄μ£Όκ³ -> 2λ₯Ό λ°μΌλ‘ λλ μ€κ°
-> 1 μ§μ -> 2λ₯Ό λ°μΌλ‘ λλ μ€ κ° -> 1μ΄ κ°μ κ²½μ° μ λλ€.
μ½λνμ΄
aμ b κ°μ κ°μ§ λ³μλ₯Ό κ°κ° λ§λ€μ΄μ€λλ€. -> var A = a , var B = b
λͺ λ²μ§Έ roundμΈμ§ μ μ₯ν λ³μλ₯Ό λ§λ€μ΄μ€λλ€. -> var round = 0
whileλ¬ΈμΌλ‘ Aμ Bκ° κ°μ§ μλ€λ©΄μ 쑰건μΌλ‘ λ°λ³΅ν΄μ€λλ€. -> while A != B { ... }
κ·Έλ¦¬κ³ λ¬Έμ νμ΄μ κ°μ΄ Aμ Bλ₯Ό κ°κ° νμλΌλ©΄ 1μ λν΄μ£Όκ³ 2λ‘ λλ μ£Όκ³ μλλΌλ©΄ κ·Έλ₯ 2λ‘ λλ μ€λλ€. ->
if A%2 == 1 {
A = (A + 1)/2
}else{
A = A/2
}
if B%2 == 1 {
B = (B + 1)/2
}else{
B = B/2
}
whileλ¬Έμ νλ² λλλ§λ€ λ€μμΌλ‘ μ§νλ κ²μ΄λ―λ‘ roundλ₯Ό λνκΈ° 1ν΄μ€λλ€. -> round += 1
λ§μ§λ§μΌλ‘ Aμ Bκ° κ°μμ‘μ λ (whileλ¬Έμ νμΆνμ λ) roundλ₯Ό λ°νν΄μ€λλ€. -> return round
μ 체μ½λ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
func solution(_ n:Int, _ a:Int, _ b:Int) -> Int
{
var A = a
var B = b
var round = 0
while A != B {
if A%2 == 1 {
A = (A + 1)/2
}else{
A = A/2
}
if B%2 == 1 {
B = (B + 1)/2
}else{
B = B/2
}
round += 1
}
return round
}
|
'π Problem Solution > Programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘κ·Έλλ¨Έμ€ μμ λ§λ€κΈ° Swift (0) | 2020.10.19 |
---|---|
2018 KAKAO BLIND RECRUITMENT [1μ°¨] μΊμ Swift (0) | 2020.10.17 |
νλ‘κ·Έλλ¨Έμ€ μ νμ μκ°μ΄λ Swift (0) | 2020.10.16 |
νλ‘κ·Έλλ¨Έμ€ JadenCase λ¬Έμμ΄ λ§λ€κΈ° Swift (0) | 2020.10.10 |
νλ‘κ·Έλλ¨Έμ€ Nκ°μ μ΅μ곡배μ Swift (0) | 2020.10.09 |
λκΈ