n이 작을때부터 몇개를 넣어서 직접 시뮬레이션 해보면, n이 홀수일때와 짝수일때로 결과가 나뉨을 알 수 있다. 하지만 n <= 10^18 제한까지 모든 n에 대해 성립함을 증명하는것은 꽤나 어렵다.
n이 홀수라면 k와 같은 홀짝성을 가진다. 각 연산마다 k는 홀짝이 바뀌고, n 역시 +1 또는 -1을 통해 홀짝이 바뀌기 때문이다.
n=1일때 자명하게 no 이고, 처음 시작때 n > k 라고 하자. 홀짝성이 같기 때문에 n이 감소하다가 n = k 인 순간이 오거나, 혹은 오지 않는다면 항상 n > k 가 유지되거나 둘 중 하나이다.
n > k 가 유지되면 0에 도달할 수 없으니 no 이고, n = k인 순간이 온다면 그 순간부터 n과 k는 같이 1씩 증가하며 결국 발산하므로 0에 도달할 수 없어 no이다.
마찬가지로 n이 짝수라면, k와 다른 홀짝성을 가진다.
n > k 라고 하자. 홀짝성이 다르기 때문에 n = k 인 순간은 오지 않는다. 또한 n < k가 되는 순간 n이 k의 배수가 될 수 없으므로 n은 계속 작아지기 때문에 n은 0이 될 수 있다.
따라서 n이 짝수인데 0에 도달할 수 없는 경우는 항상 n > k가 유지되는 순간밖에 없다.
k가 짝수일 때, n은 항상 홀수이다. 이는 k가 짝수일 때 n이 k의 배수가 될 수 없다는걸 의미한다. 따라서 적어도 k가 짝수인 순간에 n은 감소한다. 만약 n이 k가 홀수인 모든 순간에 n이 k의 배수라서 증가한다고 하자. 그렇다고 하더라도, 결코 n > k 는 유지될 수 없다. k는 매 시행마다 1씩 단조증가하지만, n은 2번의 시행마다 한번의 증가와 한번의 감소를 거쳐 원래 n으로 돌아오기 때문이다. 결국 n < k 인 순간이 오게 되고, 앞서 말했듯 홀짝성이 다르기 때문에 n = k인 순간이 오지 않아 n < k가 되는 순간 0에 도달하게 되어 0이 될 수 있다.
따라서 n이 홀수일때 No 이고, n이 짝수일때 Yes이다.
process.stdin.on('data',e=>console.log(BigInt(String(e))%2n == 1n?'No':'Yes'))'PS 풀이' 카테고리의 다른 글
| [백준 27904] 키파-틱택토 (0) | 2025.09.05 |
|---|---|
| 2-SAT 풀이 모음집 (17 / 72) (0) | 2025.09.04 |
| [백준 18789] 814 - 2 (11008점) (0) | 2025.07.03 |
| [백준 7659] Rubik 2^3 (0) | 2025.04.18 |
| [백준 22222] 지애 상수 (0) | 2025.02.19 |