문제
내가 작성한 정답
class Solution {
public int solution(int[] dot) {
int answer = 0;
if(dot[0]>0){
if(dot[1]>0)answer = 1;
else answer=4;
}else{
if(dot[1]>0) answer = 2;
else answer =3;
}
return answer;
}
}
다른 사람들이 작성한 정답
class Solution {
public int solution(int[] dot) {
int xParam = dot[0] < 0 ? 1 : 0; // x좌표가 음수이면 1, 아니면 0
int yParam = dot[1] < 0 ? 2 : 0; // y좌표가 음수이면 2, 아니면 0
return 1 + ((xParam | yParam) ^ (yParam >> 1));
}
}
- xParam | yParam: x좌표와 y좌표의 부호를 비트 OR 연산으로 결합 예를 들어, x가 양수이고 y가 음수일 경우 xParam은 0, yParam은 2이므로 0 | 2는 2가 된다.
- yParam >> 1: y좌표가 음수일 경우 2를 1비트 오른쪽으로 이동시켜서 2는 1로 변환 ^ (yParam >> 1): XOR 연산을 통해 두 값을 결합. 이 연산은 특정 조합에서 사분면 번호를 결정하는 데 사용
- 1 + (...): 마지막으로 1을 더하여 최종 사분면 번호를 반환 사분면 번호는 1부터 시작하므로, 비트 연산 결과에 1을 더한다.
Share article