코테/프로그래머스

[프로그래머스/Level2] 2개 이하로 다른 비트 (JAVA)

imname1am 2024. 1. 29. 17:50
반응형

📖 문제

 

프로그래머스

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

programmers.co.kr

 

 

 

💡  풀이 방식

• 비트 연산

- 정답 배열 answer을 numbers와 같은 값으로 설정한다. (clone)- 해당 answer배열의 칸의 값을 +1하여 해당 칸보다 큰 수로 만들고,  answer[i]의 값과 numbers[i]를 XOR 비트연산한 후, 오른쪽으로 2칸 shift한 값을 본인의 값과 더한다. (규칙이 그렇다고 한다.)

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.*;
 
class Solution {
    public long[] solution(long[] numbers) {
        long[] answer = numbers.clone();
        
        for(int i = 0 ; i < numbers.length ; i++) {
            answer[i]++;
            answer[i] += (answer[i]^numbers[i]) >> 2;
        }
        
        return answer;
    }
}
cs

 

 

➕ 다른 풀이 방식

1) 짝수의 경우, 2진수 마지막 자리가 1인 경우, 짝수보다 1 큰 홀수가 되는 경우가 정답이 된다.

2) 홀수의 경우, 뒤에서부터 가장 가까이 있는 0을 찾아 1로 바꾸고, 뒤의 1을 0으로 변경하면 정답이 된다.

 

2개 이하로 다른 비트

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 class Solution { public long[] solution(long[] numbers) { long[] answer = new long[numbers.length]; for (int i = 0; i

zzunsik.tistory.com

 

[프로그래머스] level2. 2개 이하로 다른 비트 (자바 JAVA)

[ 문제 ] [프로그래머스] level2. 2개 이하로 다른 비트 (자바 JAVA) 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/77885 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr # 접근 방법 및 풀이

ilmiodiario.tistory.com

 

[프로그래머스] LEVEL2 2개 이하로 다른 비트 JAVA

문제링크짝수의 경우에는 2진수의 마지막 자리가 1인 되는 경우, 즉 짝수보다 1큰 홀수가 된는 경우가 정답이다.홀수의 경우에는 뒤에서 부터 가장 가까운 곳에 있는 0을 찾아 1로 바꾸고 뒤의 1

velog.io


💦 어려웠던 점

ㅋㅋ아니 이런 규칙을 어떻게 찾지?

그냥 비트연산으로 하려고 했는데 틀렸었다

 

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

 

[Java/자바] 프로그래머스 Lv2 - 2개 이하로 다른 비트

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

hstory0208.tistory.com

 

반응형