반응형
다음 큰 숫자 Level2
문제 풀이:
1. 주어진 숫자(n)를 2진법으로 바꿔서 1의 숫자 개수를 구한다.
2. n에 1을 더한 값(next)을 2진법으로 바꿔서 1의 숫자 개수를 구한다.
3. 1번과 2번을 비교하면서 숫자가 같을 경우 next값을 리턴한다.
4. 같지 않다면 next에 1을 더해준다.
5. 1-4번까지 무한 반복
코드:
import Foundation
func solution(_ n:Int) -> Int
{
var next = n+1
while true {
if checkBinary(n) == checkBinary(next) {
return next
}
next += 1
}
}
func checkBinary(_ n: Int) -> Int {
let s = String(n, radix: 2)
return s.filter { $0 == "1"}.count
}
다른 분의 풀이:
import Foundation
func solution(_ n:Int) -> Int {
var answer : Int = n + 1
while true {
if n.nonzeroBitCount == answer.nonzeroBitCount {
break;
}
answer += 1
}
return answer
}
이 코드를 보고 nonzeroBitCount 프로퍼티를 처음 알게 되었는데 숫자를 bit로 나타냈을 때 1의 개수를 세주는 프로퍼티이다.
문제:
programmers.co.kr/learn/courses/30/lessons/12911
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm/Programmers] 캐시 Swift (0) | 2021.01.27 |
---|---|
[Algorithm/Programmers] 올바른 괄호 Swift (0) | 2021.01.15 |
[Algorithm/Programmers] 가장 큰 정사각형 찾기 Swift (0) | 2021.01.14 |
[Algorithm/Programmers] 피보나치 수 (0) | 2021.01.14 |
[Algorithm/Programmers] 프린터 (0) | 2021.01.14 |
댓글