๋ฌธ์ ์ค๋ช
์์ฐ์ 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
}
|
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฐ๋จน๊ธฐ Swift (0) | 2020.08.27 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์ฌ๋ฐ๋ฅธ ๊ดํธ Swift (0) | 2020.08.10 |
ํ๋ก๊ทธ๋๋จธ์ค ์นดํซ Swift (0) | 2020.05.28 |
ํ๋ก๊ทธ๋๋จธ์ค ์์ฅ Swift (2) | 2020.05.18 |
ํ๋ก๊ทธ๋๋จธ์ค ์ซ์์ผ๊ตฌ Swift (0) | 2020.05.18 |
๋๊ธ