문제 설명
양의 정수 x에 대한 함수 f(x)를 다음과 같이 정의합니다.
- x보다 크고 x와 비트가 1~2개 다른 수들 중에서 제일 작은 수
예를 들어,
- f(2) = 3 입니다. 다음 표와 같이 2보다 큰 수들 중에서 비트가 다른 지점이 2개 이하이면서 제일 작은 수가 3이기 때문입니다.

- f(7) = 11 입니다. 다음 표와 같이 7보다 큰 수들 중에서 비트가 다른 지점이 2개 이하이면서 제일 작은 수가 11이기 때문입니다.

numbers의 모든 수들에 대하여 각 수의 f 값을 배열에 차례대로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
입출력 예 설명
제한사항
- 1 ≤ numbers의 길이 ≤ 100,000
- 0 ≤ numbers의 모든 수 ≤ 1015
입출력 예
numbers | result |
[2,7] | [3,11] |
입출력 예 설명
입출력 예 #1
- 문제 예시와 같습니다.
from collections import deque
def makebase(num, k): #2진수로 변환
result = deque()
while num > 0:
result.appendleft(str(num%k))
num //= k
result.appendleft(str(num))
return result
def solution(numbers):
answer = []
for num in numbers:
base = makebase(num, 2)
index = 0
# 가장 마지막으로 나타나는 0을 1로 변경 (= 가장 작은 0을 1로 변경)
# 바뀐 인덱스 그 다음 인덱스를 0으로 변경 (= 가장 큰 1을 0으로 변경)
for i, n in enumerate(base):
if n == '0':
index = i
base[index] = '1'
if index+1 < len(base):
base[index+1] = '0'
answer.append(int(''.join(base),2))
return answer
하루종일 백준 붙잡고 있다가
설날에 붙잡고 있는 게 너무 억울해서 프로그래머스로 노선 변경....
ㅋㅋㅋㅋㅋㅋㅋㅋㅋ하 진짜 백준 문제들 너무 어렵고 너무 짜증나요 ㅜㅜ
미친 효율성을 내야하는 문제가 너무 많아서 머리 너무 아프고.... 진짜 뭐랄까
백준은... 정말.... 백준 문제들은....
내가 뭐 하나 할 때마다 사사건건 태클걸고 아닌데? 아닌데 그거 아닌뎅? ㅋㅋ 하고 약 올리면서 힌트따위 절대 안 알려주는 또라이같아
프로그래머스 이번 문제는 쉬웠다....
백준 풀다 오니까 너무 쉽게 풀렸어요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
풀었을 때 짜릿함까지 느낌 진짜 ㅋㅋ 하
설 끝나면 백준 조진다 (= 설 끝나면 백준한테 내가 조져진다)
'Code IT > Algorithm' 카테고리의 다른 글
[프로그래머스] 구명보트 (Python) - Greedy (2) | 2023.01.25 |
---|---|
[프로그래머스] 행렬의 곱셈 (Python) (0) | 2023.01.23 |
[백준] 1655 가운데를 말해요 (Python) - heapq (0) | 2023.01.21 |
[프로그래머스] 연속 부분 수열 합의 개수 (Python) (0) | 2023.01.20 |
[프로그래머스] 땅따먹기 (Python) - DP (0) | 2023.01.19 |
댓글