https://school.programmers.co.kr/learn/courses/30/lessons/77885
내 풀이
# xor 연산 - 같으면 0 다르면 1 연산의 결과중에 1의 개수가 2개 이하인거만 세면되지않을까?
# def solution(numbers):
# maxs=100000
# temp = []
# for i in numbers:
# j = i + 1
# while True:
# if bin(i^j).count('1') <=2:
# temp.append(j)
# break
# j=j+1
# return temp
최초의 풀이는 이랬다. xor연산 했고 시간초과
def solution(numbers):
answer=[]
for i in numbers:
if i % 2 ==0:
answer.append(i+1)
else:
j = '0' + bin(i)[2:]
idx = j.rfind('0')
j = list(j)
j[idx]='1'
j[idx+1]='0'
answer.append(int(''.join(j),2))
return answer
그래서 그냥 예제케이스로 보여준거 그대로 구현해봤는데 성공했다
다른 블로그 보니까 직접 손으로 구하셨던데, 게으른 나는 그냥 테스트케이스에서 일반화 했는데 얻어걸렸다.
다른사람의 풀이
'취준 > 프로그래머스' 카테고리의 다른 글
택배상자 - 파이썬 (0) | 2022.11.03 |
---|---|
롤케이크 자르기 - 파이썬 (0) | 2022.11.02 |
파일명 정렬 - 프로그래머스 (0) | 2022.10.11 |
n^2 배열 자르기 - 파이썬 (0) | 2022.10.11 |
방문 길이 - 파이썬 (1) | 2022.10.05 |