[BOJ 25175] 백준 25175번 - 두~~부 두부 두부
1. 문제
$25175$. 두~~부 두부 두부 (2022 서강대학교 청정수컵 A번)
백준 25175번 - 두~~부 두부 두부 (https://www.acmicpc.net/problem/25175)
2. 풀이
$1$부터 $N$까지 원 모양으로 있고, $M$에 어떤 특정 수 $X$를 더했을 때의 번호는 다음과 같이 구할 수 있다.
int result;
if ((M + X) % N == 0) {
result = N;
}
else if ((M + X) % N != 0) {
result = (M + X) / N;
}
그리고, 이를 간단하게 하나의 식으로 정리할 수 있다.
result = ((M - 1) + X) % N + 1;
$3$모에서 시작해서 정수 $K$를 외치기 때문에, 위 식에서 $X$의 값은 $K-3$이 된다.
result = ((M - 1) + (K - 3)) % N + 1;
이때, $K-3$의 값이 총 사람 수 $N$을 초과한 값일 수 있으므로, $N$으로 나누어 값을 제한한다.
result = ((M - 1) + (K - 3) % N) % N + 1;
$K$가 음수가 가능하므로, (K - 3) % N
의 범위는 다음과 같다.
$-(N - 1)\leq$ $(K - 3)\; \%\; N$ $\leq N - 1$
따라서, (M - 1) + (K - 3) % N
이 음수 값을 갖지 못하도록, $N$을 더해준다.
result = ((M - 1) + (k - 3) % N + N) % N + 1;
이렇게 하면, 예외 케이스를 전부 커버하면서 정답을 도출해낼 수 있다.
이 외에도, 생각하는 순서에 따라 비슷하지만 다양한 형태의 한 줄 코드가 정답으로 가능하다.
3. 채점 결과
4. 회고
.
댓글남기기