반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 가상메모리 관리
- 파이썬
- 스택
- 힙
- 에라스토테네스의 체
- 구현
- programmers
- dfs
- 재귀
- level3
- 그리디
- 다익스트라
- python
- DP
- 수학
- 코딩테스트
- level2
- 백준
- BOJ
- MYSQL
- 프로그래머스
- N과M
- 가상메모리
- 다이나믹 프로그래밍
- BFS
- level0
- level1
- 딕셔너리
- 운영체제
- 브루트포스
Archives
- Today
- Total
동캄의 코딩도장
프로그래머스 level2 [2개 이하로 다른 비트] 파이썬 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/77885
코딩테스트 연습 - 2개 이하로 다른 비트
programmers.co.kr
#프로그래머스 2개 이하로 다른 비트
def solution(numbers):
answer = []
for number in numbers:
b=bin(number)[2:]
k=(number+1)
while True:
b_=bin(k)[2:]
cross=[0]*(len(b_))
d=len(b_)-len(b)
for i in range(len(b)):
if b[i]==b_[d+i]:
cross[i]=0
else:
cross[i]=1
for i in range(d):
cross.append(1)
if 1<=cross.count(1)<=2:
answer.append(k)
break
k+=1
return answer
처음에는 완전탐색으로 number를 기준으로 값을 1씩 더하면서, 차이를 계산하였는데 시간초과가 발생하였다.
#프로그래머스 2개 이하로 다른 비트
def solution(numbers):
from collections import deque
answer = []
for number in numbers:
bit=bin(number)[2:]
bit=deque(list(map(str,bit)))
zero_cnt=bit.count('0')
leng=len(bit)
if zero_cnt==0:
bit.appendleft('1')
bit[1]='0'
elif zero_cnt==1:
ind=bit.index('0')
if ind==(len(bit)-1):
bit[ind]='1'
else:
bit[ind]='1'
bit[ind+1]='0'
else:
for i in range(len(bit)-1,0,-1):
if bit[i]=='0':
break
if i==(len(bit)-1):
bit[-1]='1'
else:
bit[i]='1'
bit[i+1]='0'
answer.append(int(''.join(bit),2))
return answer
number를 이진수로 바꾼 bit의 0의 개수를 기준으로 조건문을 전개하였다.
0개: 맨 앞에 1을 붙이고, 다음수는 0으로 바꾼다.
1개: 0인 ind를 찾는다. 마지막숫자가 0이면 숫자를 1로 바꾸고, 그렇지 않다면 0을 1로 바꾸고 다음수를 0으로 바꾼다.
2개: 0이나오는 i를 찾는다. 찾으면 반복문 탈출 후, 마지막숫자가 0이면 숫자를 1로 바꾸고, 그렇지 않다면 0을 1로 바꾸고 다음수를 0으로 바꾼다.
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
프로그래머스 level2 [가장 큰 수] 파이썬 (0) | 2021.12.08 |
---|---|
프로그래머스 level2 [가장 큰 정사각형 찾기] 파이썬 (0) | 2021.12.08 |
프로그래머스 level2 [예상 대진표] 파이썬 (0) | 2021.12.07 |
프로그래머스 level2 [영어 끝말잇기] 파이썬 (0) | 2021.12.07 |
프로그래머스 level2 [모음사전] 파이썬 (0) | 2021.12.07 |