π μ½λ©ν μ€νΈ
βπ» Github
λ¬Έμ μ€λͺ
β³β³ κ²μλνκ° κ°μ΅λμμ΅λλ€. μ΄ λνλ Nλͺ μ΄ μ°Έκ°νκ³ , ν λλ¨ΌνΈ νμμΌλ‘ μ§νλ©λλ€. Nλͺ μ μ°Έκ°μλ κ°κ° 1λΆν° Nλ²μ μ°¨λ‘λλ‘ λ°°μ λ°μ΅λλ€. κ·Έλ¦¬κ³ , 1λ²↔2λ², 3λ²↔4λ², ... , N-1λ²↔Nλ²μ μ°Έκ°μλΌλ¦¬ κ²μμ μ§νν©λλ€. κ° κ²μμμ μ΄κΈ΄ μ¬λμ λ€μ λΌμ΄λμ μ§μΆν μ μμ΅λλ€. μ΄λ, λ€μ λΌμ΄λμ μ§μΆν μ°Έκ°μμ λ²νΈλ λ€μ 1λ²λΆν° N/2λ²μ μ°¨λ‘λλ‘ λ°°μ λ°μ΅λλ€. λ§μ½ 1λ²↔2λ² λΌλ¦¬ 겨루λ κ²μμμ 2λ²μ΄ μΉλ¦¬νλ€λ©΄ λ€μ λΌμ΄λμμ 1λ²μ λΆμ¬λ°κ³ , 3λ²↔4λ²μμ 겨루λ κ²μμμ 3λ²μ΄ μΉλ¦¬νλ€λ©΄ λ€μ λΌμ΄λμμ 2λ²μ λΆμ¬λ°κ² λ©λλ€. κ²μμ μ΅μ’ ν λͺ μ΄ λ¨μ λκΉμ§ μ§νλ©λλ€.
μ΄λ, μ²μ λΌμ΄λμμ Aλ²μ κ°μ§ μ°Έκ°μλ κ²½μμλ‘ μκ°νλ Bλ² μ°Έκ°μμ λͺ λ²μ§Έ λΌμ΄λμμ λ§λλμ§ κΆκΈν΄μ‘μ΅λλ€. κ²μ μ°Έκ°μ μ N, μ°Έκ°μ λ²νΈ A, κ²½μμ λ²νΈ Bκ° ν¨μ solutionμ 맀κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ²μ λΌμ΄λμμ Aλ²μ κ°μ§ μ°Έκ°μλ κ²½μμλ‘ μκ°νλ Bλ² μ°Έκ°μμ λͺ λ²μ§Έ λΌμ΄λμμ λ§λλμ§ return νλ solution ν¨μλ₯Ό μμ±ν΄ μ£ΌμΈμ. λ¨, Aλ² μ°Έκ°μμ Bλ² μ°Έκ°μλ μλ‘ λΆκ² λκΈ° μ κΉμ§ νμ μ΄κΈ΄λ€κ³ κ°μ ν©λλ€.
μ νμ¬ν
- N : 2 μ΄μ 2 μ΄νμΈ μμ°μ (2μ μ§μ μΉμΌλ‘ μ£Όμ΄μ§λ―λ‘ λΆμ μΉμ λ°μνμ§ μμ΅λλ€.)
- A, B : N μ΄νμΈ μμ°μ (λ¨, A ≠ B μ λλ€.)
μ μΆλ ₯ μ
N | A | B | answer |
8 | 4 | 7 | 3 |
μ μΆλ ₯ μ μ€λͺ
μ μΆλ ₯ μ #1
첫 λ²μ§Έ λΌμ΄λμμ 4λ² μ°Έκ°μλ 3λ² μ°Έκ°μμ λΆκ² λκ³ , 7λ² μ°Έκ°μλ 8λ² μ°Έκ°μμ λΆκ² λ©λλ€. νμ μ΄κΈ΄λ€κ³ κ°μ νμΌλ―λ‘ 4λ² μ°Έκ°μλ λ€μ λΌμ΄λμμ 2λ²μ΄ λκ³ , 7λ² μ°Έκ°μλ 4λ²μ΄ λ©λλ€. λ λ²μ§Έ λΌμ΄λμμ 2λ²μ 1λ²κ³Ό λΆκ² λκ³ , 4λ²μ 3λ²κ³Ό λΆκ² λ©λλ€. νμ μ΄κΈ΄λ€κ³ κ°μ νμΌλ―λ‘ 2λ²μ λ€μ λΌμ΄λμμ 1λ²μ΄ λκ³ , 4λ²μ 2λ²μ΄ λ©λλ€. μΈ λ²μ§Έ λΌμ΄λμμ 1λ²κ³Ό 2λ²μΌλ‘ λ μ°Έκ°μκ° λΆκ² λλ―λ‘ 3μ return νλ©΄ λ©λλ€.
λ¬Έμ νμ΄
λμ νμ΄
import Foundation
func solution(_ n:Int, _ a:Int, _ b:Int) -> Int{
var answer = 1
var a = a, b = b, n = n
while n != 1 {
n /= 2
a = ( a + 1 ) / 2
b = ( b + 1 ) / 2
if a == b {
return answer
}else {
answer += 1
}
}
return answer
}
μ²μμλ λ°μμ μλ‘ μ¬λΌκ°λ©΄μ λΉκ΅λ₯Ό νλκ² μλ μμμ λ°μΌλ‘ λ΄λ €μ€λ©΄μ λΉκ΅λ₯Ό νλ €κ³ νλ€.
λ§μ½ Nμ΄ 8μ΄λΌλ©΄ 1…4 / 5…8 μ΄λ°μμΌλ‘ λΉκ΅λ₯Όν΄μ λ€λ₯Έ λ²μ£Όμ μλ€λ©΄ 3μ μΆλ ₯νκ³ ,
κ°μ λ²μ£Όμ μλ€λ©΄ λ€μ λΉκ΅νλ€. 1..2 / 3…4 μ΄λ κ² ν΄μ λ°λ³΅νμ¬ κ²°κ΅ κ°μ λ²μ£ΌλΌλ©΄ 1μ μΆλ ₯νλλ‘ νλ€.
κ·Όλ° κ°μ λ²μ£ΌλΌλ©΄ 1…4 μΈμ§ 5…8 μΈμ§ κΉμ§ νμ μ ν΄μΌνλ μ’ λ 볡μ‘νλ κ² κ°λ€.
κ·Έλμ λ€μ 리νλ μ¬νκ³ μ λ¬Όμ λ¨Ήμλλ°, κ·Έ μκ° “ 2λ‘ λλ λͺ«?!? μ΄λ©΄ λκ² λ€" λΌλ μκ°μ΄ λ²μ© λ μ¬λλ€. κ·Όλ° λ¬Έμ λ 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 μμ 2λ‘ λλ λͺ«μ ꡬνλ©΄ 0 / 1 / 1 / 2 / 2 / 3 / 3 / 4 κ° λλ κ²μ΄λ€. 12κ° κ°μ λ²μ£Όμ λ€κ²λ λ§λ€λ €μ 1μ λνκ±°λ λΉΌμ 1 / 1 / 2 / 2 / 3 / 3 / 4 / 4 λ‘ λ§λ€μ΄μΌ νλ€. λλ λνλ μͺ½μ ννλ€.
Aμ Bμ κ°κ° 1μ λν ν 2λ‘ λλ κ°μ λμ νλ€. κ°μ΄ κ°μ§ μλ€λ©΄ count λ₯Ό 1μ¬λ¦¬κ³ λ€μ λ°λ³΅ κ²°κ΅ κ°μ΄ κ°λ€λ©΄ countκ° λ΅μΈ κ²μ΄λ€.
8λ²μ΄λ©΄ 3λ²λ§ λ°λ³΅νλ©΄ λκ³ , 2μ 20λ²μ΄λ©΄ 20λ²λ§ λ°λ³΅νλ€λ©΄ λμ€λ νμ΄μλ€.
κ·Έλμ μκ°λ μ λ§ ν¨μ¨μ μΌλ‘ κ³μ°ν μ μκ³ , νμ΄λ κ°λ¨νκ² νμλ κ² κ°λ€.
λ€λ₯Έ μ¬λ νμ΄
import Foundation
func solution(_ n:Int, _ a:Int, _ b:Int) -> Int
{
var answer = 0
var nextA = a
var nextB = b
repeat {
nextA = (nextA + 1) / 2
nextB = (nextB + 1) / 2
answer += 1
} while nextA != nextB
return answer
}
λΆλͺ λλ κ°μ λ°©λ²μΌλ‘ νμλλ° μ½λκ° μ΄μ©μ΄λ¦¬ κΉλνμ§..! μ½λλ₯Ό κΉλνκ² μ°λλ‘ μ°μ΅ν΄μΌκ² λ€.
λλμ
Lv.2 μ μ¬λΌμ€λ λ§μ ν ν¬λμ μꡬνλ©΄μ λ¬Έμ λ₯Ό νμΌλΌλ κ² μλλΌ ‘ λ.. μ΄κ±° 머리 μμ¨μΌ ν μ μλλ° ν μ μκ² μ΄..?’ μ΄λ κ² λ¬»λ λλμ΄λ€. μ€λλ μ±κ³΅μ μκ³ λ¦¬μ¦ νμ΄..!!