새소식

코딩테스트/프로그래머스

[Swift] 다음 큰 숫자

  • -

[문제]

코딩테스트 연습 - 다음 큰 숫자 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

[문제 풀이]

주어진  숫자와 이진법으로 만들었을때 1의 수가 같은 가장 작은 수를 반환하는 함수를 만드는 문제이다.

이진법에서 1의 숫자를 세는 binaryCheck 함수, n과 현재 숫자의 1의 수가 같은지 확인해주는 isCheck 함수, 그리고 n + 1부터 100만까지 돌아가는 반복문을 통하여 문제를 풀 수 있다.

[회고]

프로그래머스 기본 코드가

var answer:Int = 0

 

이 아니라

 

answer:Int = 0

 

로 선언이 되어 있어서 계속 오류가 났었다.

 

눈치를 못챈 나도 잘못하긴 했는데 기본으로 준 코드가 오류나는건 좀 아니지 않나 싶음.

[코드]

import Foundation

func solution(_ n:Int) -> Int
{
    var answer:Int = 0
    
    func binaryCheck(_ m: Int) -> Int {
        var answer:Int = 0
        var temp:Int = m
        while(temp > 0){
            if(temp % 2 == 1){
                answer += 1
            }
            temp /= 2
        }
        return answer
    }
    
    func isCheck(_ m : Int, _ s : Int) -> Bool {
        if(binaryCheck(n) == binaryCheck(s)){
            return true
        }
        return false
    }
    
    for i in n+1...1000000 {
        if(isCheck(n,i) == true){
            answer = i
            break
        }
    }
    
    
    return answer
}

 

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[Swift] 짝지어 제거하기  (0) 2023.11.16
[Swift] 피보나치 수  (0) 2023.11.16
[C++] 다음 큰 숫자  (0) 2023.11.14
[Swift] 로또의 최고 순위와 최저 순위  (0) 2023.09.24
[Swift] 대충 만든 자판  (0) 2023.09.24
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.