문제
Each move removes two coins from one pile and one coin from the other. Either orientation is allowed. You may never remove more coins than remain. Determine whether both piles can end at zero.
Implement coin_piles(left, right).
Input
left: The number of coins in the left pile.
right: The number of coins in the right pile.
Output
Return true if the piles can both be emptied; otherwise return false.
제약 조건
0 ≤ left, right ≤ 1,000,000,000. Two empty piles are already a successful result.
예시
입력:
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;
설명
Remove (2, 1) twice: (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;
설명
The only possible first move leaves (2, 0), after which no move can empty the left pile.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
Each move removes exactly three coins total, so the overall coin count must fit that pattern.
힌트 2
Neither pile can be reduced below zero, so one pile cannot exceed what the other can support.
힌트 3
Check both the total amount and the difference between piles.
예상 복잡도
O(1) time, O(1) extra space
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.