728x90
[Swift] 프로그래머스 다음 큰 숫자(lv. 2)
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/12911
2. 접근
다음 큰 수의 정의는 이진수에서 1의 개수가 같으나, 십진법에 따르면 이전 수보다 더 큰수를 의미한다.
예를 들어 8이 주어진다면, 이진법으로 1000(2) 이고, 그 다음으로 큰 수는 10000(2) 즉, 16이 다음 큰 숫자가 되는 것이다.
일단 1을 카운팅하는 변수를 두고, 현재 숫자에 1을 더하고, 그것을 이진수로 바꾼 뒤에 1의 개수를 셌는데 같다면 그 숫자를 리턴해준다.
3. 코드
import Foundation
func solution(_ n:Int) -> Int {
var answer: Int = 0
var binaryNumber = String(n, radix: 2).filter({ $0 == "1" }).count
var tempNumber = n + 1
while true {
if String(tempNumber, radix: 2).filter({ $0 == "1"}).count == binaryNumber {
answer = tempNumber
break
}
tempNumber += 1
}
return answer
}
728x90
'Problem Solving' 카테고리의 다른 글
[Swift] 프로그래머스 카펫(lv. 2) (0) | 2023.03.09 |
---|---|
[Swift] 프로그래머스 짝지어 제거하기(lv. 2) (0) | 2023.03.07 |
[Swift] 프로그래머스 피보나치 수(lv. 2) (0) | 2023.03.03 |
[Swift] 프로그래머스 이진 변환 반복하기(lv. 2) (0) | 2023.03.02 |
[Swift] 프로그래머스 올바른 괄호(lv. 2) (0) | 2023.03.01 |
댓글