문제
각 이동에서는 한 더미에서 동전 두 개, 다른 더미에서 동전 한 개를 제거합니다. 어느 쪽이든 가능합니다. 남아 있는 동전보다 많이 제거할 수는 없습니다. 두 더미 모두 0이 될 수 있는지 판단하세요.
coin_piles(left, right)를 구현하세요.
입력
left: 왼쪽 더미에 있는 동전의 개수입니다.
right: 오른쪽 더미에 있는 동전의 개수입니다.
출력
두 더미를 모두 비울 수 있으면 true를, 그렇지 않으면 false를 반환하세요.
제약 조건
0 ≤ left, right ≤ 1,000,000,000. 두 더미가 이미 비어 있다면 성공한 결과로 간주합니다.
예시
입력:
left = 4
right = 2
예상 출력:
expected = True
입력:
long long left = 4;
long long right = 2;
예상 출력:
bool expected = true;
입력:
long left = 4;
long right = 2;
예상 출력:
bool expected = true;
설명
(2, 1)씩 두 번 제거: (4, 2) → (2, 1) → (0, 0).
입력:
left = 4
right = 1
예상 출력:
expected = False
입력:
long long left = 4;
long long right = 1;
예상 출력:
bool expected = false;
입력:
long left = 4;
long right = 1;
예상 출력:
bool expected = false;
설명
가능한 첫 이동 후 (2, 0)이 남고, 이후에는 왼쪽 더미를 비울 수 있는 이동이 없습니다.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
한 번의 이동은 총 3개의 동전을 없애므로, 전체 개수도 그 패턴에 맞아야 한다.
힌트 2
어느 한 더미도 음수가 될 수 없으니, 한 더미가 다른 더미가 감당할 수 있는 범위를 넘으면 안 된다.
힌트 3
전체 합과 두 더미의 차이를 함께 확인한다.
예상 복잡도
시간 O(1), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.