์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 |
Tags
- ๋ถํ ํ์
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ธ๋ฃจํธํฌ์ค
- ๋ฐฑ์ค
- ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
- ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
- Swift
- dp
- WebView
- ๋ถํ ์ ๋ณต
- ์ฝ๋ฉํ ์คํธ
- ์๊ณ ๋ฆฌ์ฆ
- ์ฝํ
- ๋ฌธ์์ด
- Queue
- ์ด์งํ์
- SwiftUI
- BFS
- ios
- WebApp
- ๋์ ํฉ
- ์์
- ๋ฐฑํธ๋ํน
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋นํธ์ฐ์ฐ์
- ๋ถํ ์ ๋ณต
- dfs
- ์คํ
Archives
- Today
- Total
MUKER_DEV with iOS
[swift] ํ๋ก๊ทธ๋๋จธ์ค -2๊ฐ ์ดํ๋ก ๋ค๋ฅธ ๋นํธ ๋ณธ๋ฌธ
๐ค ์๊ณ ๋ฆฌ์ฆ/programmers
[swift] ํ๋ก๊ทธ๋๋จธ์ค -2๊ฐ ์ดํ๋ก ๋ค๋ฅธ ๋นํธ
MUKER 2023. 4. 13. 17:35ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
์คํจ ํ์ด
func solution(_ numbers:[Int64]) -> [Int64] {
return numbers.map {
var n = $0 + 1
for i in n... {
if (i^$0).nonzeroBitCount <= 2 {
n = i
break
}
}
return n
}
}
// ๋นํธ์ฐ์ฐ์ ^ ๋ ์๋ก์ ๋นํธ๊ฐ ๋ค๋ฅผ ๋ 1์ ๋ฐํํ๋ค.
// nonzeroBitCount๋ ๋นํธ๊ฐ 1์ผ ๋์ ๊ฐ์๋ฅผ ์ผ๋ค.
ํ์ด ํค์๋
๋นํธ์ฐ์ฐ์
์ ๋ ฅ๊ฐ์ +1์ ๋ํด๊ฐ๋ฉฐ
์ ๋ ฅ๊ฐ๊ณผ ๋ํ ๊ฐ์ ๋นํธ๊ฐ 2์ด์ ์ฐจ์ด๋์ง ์๋๋ค๋ฉด ๋ฐํ
ํด๋น ํ์ด๋ ์๊ฐ์ด๊ณผ๋ก ์คํจ
์ฑ๊ณต ํ์ด
func solution(_ numbers:[Int64]) -> [Int64] {
return numbers.map {
let next = ~$0 & ($0+1)
return ($0 | next) & ~(next >> 1)
}
}
ํ์ด ํค์๋
๋นํธ์ฐ์ฐ์
๋นํธ๊ฐ 2๊ฐ ์ดํ๋ก ๋ค๋ฅธ ์ ์ค ์ ์ผ ์์ ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์
๋นํธ์ ์ ์ผ ์ค๋ฅธ์ชฝ 0์ด 1๋ก ๋ฐ๋๊ณ
0์์ 1๋ก ๋ฐ๋ ์๋ฆฌ์ ์ค๋ฅธ์ชฝ์ ์ซ์๋ฅผ 0์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ๋๋ค.
ex) 0101 -> 0110
๋ง์ฝ ๋ง์ง๋ง ์๋ฆฌ์ 0์ด ์์๋ค๋ฉด, ๋ง์ง๋ง ์๋ฆฌ๋ง 1๋ก ๋ฐ๊พธ๋ฉด ๋ฉ๋๋ค.
๋ง์ง๋ง ์๋ฆฌ๊ฐ 0์ผ ๋๋ ์ง์๋ฅผ ์๋ฏธํ๋ฏ๋ก
์ง์์ผ ๋๋ 10์ง์์์ +1๋ง ํด๋
๋นํธ๊ฐ 2๊ฐ ์ดํ๋ก ๋ค๋ฅธ ์ ์ค ์ ์ผ ์์ ์๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
ex) 1110 -> 1111
๋ชจ๋ ์๊ฐ 1๋ก ์ฑ์์ ธ ์๋ ๋นํธ๋ผ๋ฉด
์ฒซ์๋ฆฌ์ 1์ด ๋ถ์ผ๋ฉด์, ์๋ ์ฒซ์๋ฆฌ์๋ 1์ 0์ด ๋๊ฒ ์ฃ !
ex) 1111 -> 10111
์์)
์ ๋ ฅ: 4 (2์ง์: 0100)
next = ~0100 & (0100 +1)
next = 1011 & 0101
next = 0001
return (0100 | 0001) & 1111
return 0101 & 1111
return 0101
์ถ๋ ฅ: 5(2์ง์: 0101)
์ ๋ ฅ: 7 (2์ง์: 111)
next = ~0111 & (0111+1)
next = 1000 & 1000
next = 1000
return (0111 | 1000) & ~(1000 >> 1)
return 1111 & ~(0100)
return 1111 & 1011
return 1011
์ถ๋ ฅ: 11(2์ง์: 1011)
'๐ค ์๊ณ ๋ฆฌ์ฆ > programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2023.04.18 |
---|---|
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ (0) | 2023.04.17 |
[swift] ํ๋ก๊ทธ๋๋จธ์ค - [1์ฐจ] ํ๋ ์ฆ4๋ธ๋ก (0) | 2023.04.12 |
[swift] ํ๋ก๊ทธ๋๋จธ์ค - ๋ชจ์์ฌ์ (0) | 2023.04.12 |
[swift] ํ๋ก๊ทธ๋๋จธ์ค - [3์ฐจ] ํ์ผ๋ช ์ ๋ ฌ (0) | 2023.04.10 |