챌린지 목록으로 돌아가기
보통 0명 해결 정답률 0%

두 동전 더미 비우기

쌍으로 동전을 제거하여 두 더미를 모두 비울 수 있는지 결정하세요.

배우게 될 내용

  • 과정을 방정식으로 바꾸기
  • 나누어떨어짐과 균형 조건 확인하기
  • 상수 시간에 답하기

문제

원문 보기 (영어)

각 이동에서는 한 더미에서 동전 두 개, 다른 더미에서 동전 한 개를 제거합니다. 어느 쪽이든 가능합니다. 남아 있는 동전보다 많이 제거할 수는 없습니다. 두 더미 모두 0이 될 수 있는지 판단하세요.

coin_piles(left, right)를 구현하세요.

입력

left: 왼쪽 더미에 있는 동전의 개수입니다.

right: 오른쪽 더미에 있는 동전의 개수입니다.

출력

두 더미를 모두 비울 수 있으면 true를, 그렇지 않으면 false를 반환하세요.

제약 조건

0 ≤ left, right ≤ 1,000,000,000. 두 더미가 이미 비어 있다면 성공한 결과로 간주합니다.

예시

예시 1
입력:
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).

예시 2
입력:
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에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.