νλ‘κ·Έλλ¨Έμ€ λ€μ ν° μ«μ Swift
λ¬Έμ μ€λͺ
μμ°μ nμ΄ μ£Όμ΄μ‘μ λ, nμ λ€μ ν° μ«μλ λ€μκ³Ό κ°μ΄ μ μ ν©λλ€.
- 쑰건 1. nμ λ€μ ν° μ«μλ nλ³΄λ€ ν° μμ°μ μ λλ€.
- 쑰건 2. nμ λ€μ ν° μ«μμ nμ 2μ§μλ‘ λ³ννμ λ 1μ κ°―μκ° κ°μ΅λλ€.
- 쑰건 3. nμ λ€μ ν° μ«μλ 쑰건 1, 2λ₯Ό λ§μ‘±νλ μ μ€ κ°μ₯ μμ μ μ λλ€.
μλ₯Ό λ€μ΄μ 78(1001110)μ λ€μ ν° μ«μλ 83(1010011)μ λλ€.
μμ°μ nμ΄ λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, nμ λ€μ ν° μ«μλ₯Ό return νλ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ ν μ¬ν
- nμ 1,000,000 μ΄νμ μμ°μ μ λλ€.
μ μΆλ ₯ μ
n | result |
78 | 83 |
15 | 23 |
νμ΄:
쑰건 1μ λΆν©νκΈ° μν΄ answerλΌλ λ³μλ₯Ό n+1λ‘ λ§λ€μ΄μ€λλ€. -> var answer:Int = n+1
그리곀 whileλ¬Έμ μ¬μ©ν΄ answerλ₯Ό 쑰건μ λΆν©νμ§ μλ€λ©΄ +1μ ν΄μ€λλ€. -> while true{ ... answer += 1 }
쑰건 2μ λΆν©νκΈ° μν΄ nμ 2μ§μλ‘ λ³ννμ λ 1μ κ°―μλ₯Ό μμλ λλ€. μ°μ String(n,radix:2)λ₯Ό ν΅ν΄ 2μ§μλ‘ λ°κΏμ€ λ€ mapμΌλ‘ κ° λ¬Έμλ€μ λλ μ€λλ€. 그리곀 filterλ₯Ό μ¬μ©ν΄μ 1λ§ κ±Έλ¬λΈ λ€ countλ₯Ό μ¬μ©νμ¬ κ·Έκ²μ κ°―μλ₯Ό μμλ λλ€, -> let a = String(n, radix: 2).map{$0}.filter{$0 == "1"}.count
λν answerλ λκ°μ΄ 2μ§μλ‘ λ³νν΄ 1μ κ°―μλ₯Ό μμλ λλ€. -> let b = String(answer, radix: 2).map{$0}.filter{$0 == "1"}.count
쑰건 3μ λΆν©νκΈ° μν΄μ aμ bλ₯Ό λΉκ΅ν΄μ λ§μ½ κ°λ€λ©΄ whileλ¬Έμ λ°λ‘ νμΆνκ² λ§λλλ€.. -> if a == b{ break }
κ·Έλ¦¬κ³ answerλ₯Ό λ°νν΄μ£Όλ©΄ 쑰건 1,2,3μ λͺ¨λ μΆ©μ‘±λλ λ΅μ λ°νν μ μμ΅λλ€. -> 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 answer:Int = n+1
while true{
let a = String(n, radix: 2).map{$0}.filter{$0 == "1"}.count
let b = String(answer, radix: 2).map{$0}.filter{$0 == "1"}.count
if a == b{
break
}
answer += 1
}
return answer
}
|
λ€λ₯Έ μ¬λμ νμ΄:
nonzeroBitCountλΌλ κ²μ μ¬μ©ν΄μ£Όλ©΄ μ΄μ§μμμ 1μ κ°―μλ₯Ό νμΈν μ μλ€.!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import Foundation
func solution(_ n:Int) -> Int {
var answer : Int = n + 1
while true {
if n.nonzeroBitCount == answer.nonzeroBitCount {
break;
}
answer += 1
}
return answer
}
|