[알고리즘문제풀기] 점의 위치 구하기

silver's avatar
Nov 25, 2024
[알고리즘문제풀기] 점의 위치 구하기
 

문제

 

내가 작성한 정답

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)); } }
  1. xParam | yParam: x좌표와 y좌표의 부호를 비트 OR 연산으로 결합 예를 들어, x가 양수이고 y가 음수일 경우 xParam은 0, yParam은 2이므로 0 | 2는 2가 된다.
  1. yParam >> 1: y좌표가 음수일 경우 2를 1비트 오른쪽으로 이동시켜서 2는 1로 변환 ^ (yParam >> 1): XOR 연산을 통해 두 값을 결합. 이 연산은 특정 조합에서 사분면 번호를 결정하는 데 사용
  1. 1 + (...): 마지막으로 1을 더하여 최종 사분면 번호를 반환 사분면 번호는 1부터 시작하므로, 비트 연산 결과에 1을 더한다.
Share article

silver