[문제]
코딩테스트 연습 - 다음 큰 숫자 | 프로그래머스 스쿨 (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
}