728x90
반응형
SMALL
https://school.programmers.co.kr/learn/courses/30/lessons/12911
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
제출 코드
def solution(n):
answer = 0
s = bin(n)[2:]
one_len = ""
for i in s:
if i == "1":
one_len += i
while True:
n += 1
s = bin(n)[2:]
compet = ""
for i in s:
if i == "1":
compet += i
if len(compet) == len(one_len):
answer = n
break
return answer
일단 이 문제는 딱히 자료구조나 알고리즘을 사용안해도 되는거 같다.(그냥 단순 구현문제
문제 조건
- n보다 큰 수
- 다음 큰 수를 2진수 변환을 했을 때 n의 2진수 변환에서의 1의 개수가 같아야한다.
- 위 두조건을 만족하는 가장 작은 수
일단 2번이 문제의 킥이다.
- s를 돌면서 1의 개수를 저장한다.
- 무한반복으로 n을 1씩 증가시켜 2진수 변환 후 1만 뽑아낸다.
- 그 뒤 원래 숫자 1의 개수와 비교하여 같으면 n을 출력
뭐 단순 구현인거 같다.
하지만 2진수 변환 함수 bin()을 알아야한다.
728x90
반응형
LIST
'프로그래머스' 카테고리의 다른 글
[프로그래머스/Python] - 멀리 뛰기 (0) | 2025.05.02 |
---|---|
[프로그래머스/Python] - 게임 맵 최단거리 (0) | 2025.05.01 |
[프로그래머스/Python] - 짝지어 제거하기 (0) | 2025.05.01 |
[프로그래머스/Python] - 점프와 순간이동 (0) | 2025.05.01 |