250x250
Notice
Recent Posts
Recent Comments
관리 메뉴

탁월함은 어떻게 나오는가?

[Algorithm] 2개 이하로 다른 비트 ( Programmers / Python && JavaScript ) 본문

[Snow-ball]프로그래밍(컴퓨터)/Algorithm Training

[Algorithm] 2개 이하로 다른 비트 ( Programmers / Python && JavaScript )

Snow-ball 2024. 9. 1. 10:38
반응형

문제 설명

양의 정수 x에 대한 함수 f(x)를 다음과 같이 정의합니다.

- x 보다 크고 x와 비트가 1~2개 다른 수들 중에서 제일 작은 수

 

예를 들어,

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

 

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

 

정수들이 담긴 배열 numbers 가 매개변수로 주어집니다. numbers 의 모든 수들에 대하여 각 수의 f 값을 배열에 차례대로 담아 return 하도록 solution 함수를 완성해주세요.

 

 

 


 

 

 

제한사항

- 1 <= numbers 의 길이 <= 100,000

- 0 <= numbers 의 모든 수 <= 10^15

 

 

 

 


 

 

 

입출력 예

 

 

 


 

 

 

문제 풀이

python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def solution(numbers):
    result = []
 
    for number in numbers:
        if number % 2 == 0:
            result.append(number + 1)
        else:
            binary = list('0' + format(number, 'b'))
 
            for i in range(len(binary) - 2-1-1):
                if binary[i] == '0' and binary[i + 1== '1':
                    binary[i] = '1'
                    binary[i + 1= '0'
                    break
            result.append(int(''.join(binary), 2))
 
    return result
cs

 

 

 

javascript:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function solution(numbers) {
    const numberList = [];
 
    for (const number of numbers) {
        if (number % 2 === 0) {
            numberList.push(number + 1);
        } else {
            const binaryList = [...'0' + number.toString(2)];
            const index = binaryList.lastIndexOf('0');
 
            binaryList[index] = '1';
            binaryList[index + 1= '0';
            const binary = binaryList.join('');
            
            numberList.push(parseInt(binary, 2));
        }
    }
    return numberList;
}
cs

 

 

 

 

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/77885?language=python3#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

반응형
Comments