문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12911
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
def solution(n):
count_n = bin(n)[2:].count('1')
tmp = n
while True:
tmp += 1
if bin(tmp)[2:].count('1') == count_n:
return tmp
풀이
- 파이썬에서 십진수를 이진수로 변환하는 함수 bin()을 이용한다.
- bin()은 결과를 0bxxxxx의 형태로 반환해주므로, 슬라이싱 [2:]를 하면 0b를 자른 결과의 문자열만 얻을 수 있다.
- 1번과 2번을 만족하는 n보다는 큰 수를 구하려면, n+1부터 탐색을 시작한다.
- 시퀀스별로 n+1을 tmp라고 하면, tmp를 이진수로 변환해서 해당 이진수 문자열의 1의 개수를 비교해서 같으면 바로 while문을 종료한다.
'👨🏻💻알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv2. 영어 끝말잇기 (0) | 2023.03.10 |
---|---|
[프로그래머스/Python] Lv2. 짝지어 제거하기 (0) | 2023.03.07 |
[프로그래머스] Lv2. 덧칠하기 (0) | 2023.03.07 |
[프로그래머스] Lv2. 최솟값 만들기 (0) | 2023.02.22 |
[프로그래머스] Lv2. 최댓값과 최솟값 (0) | 2023.02.22 |