[프로그래머스/Level2] 2개 이하로 다른 비트 (JAVA)
📖 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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