Leetcode Java Mirror Reflection
업데이트:
문제
코드
class Solution {
public int mirrorReflection(int p, int q) {
while (p % 2 == 0 && q % 2 == 0) {
p /= 2;
q /= 2;
}
return 1 - (p % 2) + (q % 2);
}
}
결과
설명
- 한 변의 길이가 p인 거울로 이루어진 사면체 내에서 남서쪽에서 발사된 레이저가 아래의 수용체 중 먼저 도달하는 지점을 구하는 문제이다.
- 레이저가 발사되는 남서쪽의 모서리를 제외하고 우측부터 위, 좌측 순으로 0, 1, 2의 수용체가 존재한다.
- 레이저는 남서쪽 모서리에서 남동쪽 0 수용체 위의 q 거리로 발사된다.
- p와 q를 가자 2로 나눈 값이 모두 0일 때까지 아래를 수행한다.
- p와 q를 각자 2로 나눈 값을 넣어준다.
- 2번이 반복이 완료되면 1에서 p에서 2를 나눈 나머지를 빼고 q에서 2를 나눈 나머지를 더한 결과를 주어진 문제의 결과로 반환한다.
- p가 홀수이고 q가 짝수인 경우 한 바퀴 돌아서, 0 수용체에 도달한다.
- p가 짝수이고 q가 홀수인 경우 좌우 벽에 반사되어, 2 수용체에 도달한다.
- p와 q가 홀수인 경우 좌우 벽에 반사되어, 1 수용체에 도달한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기