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

+ Recent posts