2022. 10. 22. 10:13ใํ๋ก๊ทธ๋๋จธ์ค-Swift
ํ๋ก๊ทธ๋๋จธ์ค - 2๊ฐ ์ดํ๋ก ๋ค๋ฅธ ๋นํธ
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/77885
๋์ ํ์ด
2์ง์์ ๊ท์น์ ์ฐพ๋๋ฐ ์ด๋ ค์์ ๋ค๋ฅธ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ ์ฐธ๊ณ ํ๋ค.
๋จผ์ 2์ง์์๋ ์ด๋ฐ ๊ท์น์ด ์๋ค.
1. ๋ชจ๋ ์ง์๋ ๋งจ ๋ง์ง๋ง์ด 0์ด๋ค.
2. ๋ชจ๋ ํ์๋ ๋งจ ๋ง์ง๋ง์ด 1์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ฌธ์ ์์ 2๊ฐ ๋นํธ ์ดํ์ ์ฐจ์ด๋ง์ผ๋ก ๊ฐ์ฅ ์์ ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ํ์์ ์ง์๋ฅผ ๋ถ๋ฆฌํด์ ์ฐพ์์ผํ๋ค.
๊ฐ์ด ์ง์์ผ๋๋
๋งจ ๋ง์ง๋ง ์๋ฆฌ์ 0์ 1๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
๊ฐ์ด ํ์์ผ๋๋
๋งจ ๋ง์ง๋ง๋ถํฐ ์ฒ์๊น์ง ํ์ํ๋ฉด์ 0์ด ๋์ค๋ ์๊ฐ 1๋ก ๋ฐ๊พธ๊ณ ๊ทธ ๋ค์ ์๋ฆฟ์๋ฅผ 0์ผ๋ก ๋ฐ๊พผ๋ค. -> ์ด ๊ฐ์ด 2๊ฐ ๋นํธ ์ดํ์ ์ฐจ์ด๋ง์ผ๋ก ๊ฐ์ฅ ์์ ์์ด๋ค.
์์๋ก 1001(9)์ ์ซ์๊ฐ ์์๋ ํ์์ ๊ท์น์ผ๋ก 1001 -> 1011 -> 1010์ด ๋๋ค๋ฉด ์ด ๊ฐ์ 10์ผ๋ก ๋๊ฐ์ ์๋ฆฌ๋ง ๋ฐ๋๊ณ 1๋ง ์ฆ๊ฐํ ์ซ์๊ฐ ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ 0์ด์๋ 111์ ๋ค์ ์ซ์๋ ์ด๋ป๊ฒ ๊ตฌํ๋ ๊ฒ์ผ๊น?
111์์ 0์ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค. "0111"์ ๋ ์์ ๊ท์น์ ์ ์ฉํ๋ฉด "1011"์ด ๋๋ค. ์ฆ 1011์ด ๊ท์น์ ๋ฐ๋ฅด๋ ๊ฐ์ฅ ์์ ๊ฐ์ด๋ค.
import Foundation
func solution(_ numbers:[Int64]) -> [Int64] {
return numbers.map{findMinNumber($0)}
}
func makeDecimalToBinary(_ num: Int64) -> String {
return "0" + String(num, radix:2)
}
func makeBinaryToDecimal(_ binary: String) -> Int64 {
return Int64(binary, radix: 2)!
}
func findMinNumber(_ num: Int64) -> Int64 {
var binaryData = makeDecimalToBinary(num).map{ String($0) }
for i in 0..<binaryData.count {
if binaryData[binaryData.count-(i+1)] == "0" {
binaryData[binaryData.count-(i+1)] = "1"
if i != 0 {
binaryData[binaryData.count-i] = "0"
}
break
}
}
return makeBinaryToDecimal(binaryData.joined())
}
'ํ๋ก๊ทธ๋๋จธ์ค-Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2022.10.22 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ๋ชจ์์ฌ์ (Swift) (0) | 2022.10.21 |
ํ๋ก๊ทธ๋๋จธ์ค - ํ์ผ๋ช ์ ๋ ฌ(Swift) (0) | 2022.10.21 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ฐฉ๋ฌธ ๊ธธ์ด(Swift) (0) | 2022.10.20 |
ํ๋ก๊ทธ๋๋จธ์ค - ์คํฌํธ๋ฆฌ(Swift) (0) | 2022.10.20 |