경우의 수를 나누고 rfind()와 규칙만 잘 찾으면 됐던 문제
짝수의 경우는 num+1
홀수의 경우에는
1) '01'이 있을 때 : '01' -> '10'으로 교체 (3,5,7,...)
2) '01'이 없을 때 (= 모든 수가 1일 때) : 앞에 0을 붙이고 '10'으로 바꿈
규칙 찾는데 너무 쉽게 포기하는거 같아서 포기하지 않고 찾아보려는 노력을 하는게 중요한거 같다
#0715
def solution(numbers):
answer = []
for num in numbers:
#짝수 일 때
if num % 2 == 0:
answer.append(num+1)
#홀수 일 때
else:
bin_num = str(format(num,'b'))
idx = bin_num.rfind('01')
if idx == -1:
bin_num = '10'+bin_num[1:]
answer.append(int(bin_num,2))
else:
bin_num = bin_num[:idx]+'10'+bin_num[idx+2:]
answer.append(int(bin_num,2))
return answer
1) find(찾을문자,찾기시작할위치) # 왼쪽부터 찾음
2) rfind(찾을 문자) # 오른쪽부터 찾음
- 문자열 중에 특정문자를 찾고 위치 반환, 없을 경우 -1 반환
3) startswith/endswith(시작하는/끝나는문자)
- 특정문자로 시작하는/끝나는지 여부를 알려줌 True/False 반환
1) count(찾을문자)
- 찾을 문자의 개수 검색
2) strip(str)
- 문자열 및 공백 제거'www.example.com'.strip('m') # 'www.exaple.co'
3) lstrip(str)
- 선행문자만 지울 때 사용'www.wxample.com'.strip('www') # '.xample.com' 'www.wxample.com'.lstrip('www') #'.wample.com'
4) rstrip(str)
- 후행문자만 지울 때 사용
1. bfs, dfs 알고리즘 공부 (예시 풀기)
2. python의 해시 = 딕셔너리
3. 자주 사용하는 문법 정리
4. 오늘의 리뷰를 내일로 미루지 말자
5. 졸려...