그냥하는코딩
프로그래머스 2단계 - [2개 이하로 다른 비트] 본문
https://programmers.co.kr/learn/courses/30/lessons/77885
코딩테스트 연습 - 2개 이하로 다른 비트
programmers.co.kr
1. 문제이해
- 이진법 변환
- 이진법 크기 비교
2. 코드 작성
def solution(numbers):
answer = []
for number in numbers:
byteNum = format(number, 'b')
if byteNum.find('0') == -1:
byteNum = '10' + byteNum[1:]
elif byteNum[-1] == '0':
byteNum = byteNum[:-1] + '1'
else:
li = byteNum.rsplit('01', 1)
byteNum = '10'.join(li)
answer.append(int(byteNum, 2))
return answer
※ 시간복잡도
len(numbers) * (find 함수 시간복잡도)
3. 풀이간 체크사항
1) 01을 찾아 10으로 바꾸는 것이 가장 이상적인 방법
2) 위 조건에서 발생가능한 예외조건 xxxx0 과 11111 케이스 나눠주기
4. 단위 기능 체크
# 이진수로 변환하기
byteNum = format(number, 'b')
# 10진수로 변환하기
int(byteNum, 2)
# 마지막 '01' '10'으로 바꾸기
li = byteNum.rsplit('01', 1)
byteNum = '10'.join(li)'부스트캠프 준비기 > 코딩테스트 알고리즘' 카테고리의 다른 글
| 프로그래머스 3단계 - [다단계 칫솔 판매] (0) | 2021.06.23 |
|---|---|
| 프로그래머스 3단계 - [풍선 터트리기] (0) | 2021.06.21 |
| 프로그래머스 2단계 - [괄호 회전하기] (0) | 2021.06.21 |
| [구글 Colaboratory] 을 활용한 알고리즘 정리 (0) | 2021.06.21 |
| 프로그래머스 3단계 - [네트워크] (0) | 2021.06.10 |
Comments