문제
내가 작성한 정답
class Solution {
public int solution(int[] dot) {
int a = dot[0], b = dot[1];
if(a*b>0){
if(a>0) return 1;
else return 3;
}else{
if(a>0) return 4;
else return 2;
}
}
}다른 사람들의 정답
class Solution {
public int solution(int[] dot) {
// x좌표가 음수면 1(왼쪽), 아니면 0(오른쪽)
int xParam = dot[0] < 0 ? 1 : 0;
// y좌표가 음수면 2(아래쪽), 아니면 0(위쪽)
int yParam = dot[1] < 0 ? 2 : 0;
// 비트 OR로 두 자리 정보를 더함 예)x좌표 음수(1), y좌표 음수(2)라면 1|2 = 3
// yParam을 오른쪽으로 1비트 이동 (2→1, 0→0)
// 이것은 y값이 음수일 때만 1, 아니면 0
// 정보를 XOR로 조합해 특정 케이스에서 결과값을 조정하고 결과에 1을 더해 사분면 나타냄
return 1 + ((xParam | yParam) ^ (yParam >> 1));
}
}Share article