level2_다음 큰 숫자

2024. 2. 27. 21:24파이썬_알고리즘(코딩테스트)/level2

 

 

내가 제출한 코드

def solution(n):
	cnt1 = bin(n)[2:].count("1")
    
    while True:
    	n += 1
        if cnt1 == bin(n)[2:].count("1"):
        	break
    return n

 

cnt1은 이진수 문자열에서 1의 개수를 세서 저장한다.

while루프를 사용해서 n보다 큰 정수 중에서 같은 수의 1을 가지는 가장 작은 정수를 찾는다.

같다면 루프는 break를 통해 중단된다. 

 

다른 사람이 제출한 코드

def nextBigNumber(n):
    one_count = bin(n).count("1")
    
    for compare_num in range(n+1, 1000001):
    	if bin(compare_num).count("1") == one_count:
        	break
    return compare_num



다른분들이 작성해주신 댓글을 봤는데 내가 제출한 코드에서 if문 없이, while 조건 안에 if의 부정 조건 넣고 돌리면 효율성 검사 통과된다고 한다! 

'파이썬_알고리즘(코딩테스트) > level2' 카테고리의 다른 글

level2_짝지어 제거하기  (0) 2024.03.05
level2_피보나치 수  (0) 2024.02.29
level2_숫자의 표현  (0) 2024.02.25
level2_이진 변환 반복하기  (0) 2024.02.22
level2_올바른 괄호(스택/큐)  (0) 2024.02.21