본문 바로가기
Problem Solving

[Swift] 프로그래머스 다음 큰 숫자(lv. 2)

by DuncanKim 2023. 3. 6.
728x90

[Swift] 프로그래머스 다음 큰 숫자(lv. 2)

 

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12911

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

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

댓글