코드
#include <iostream>
using namespace std;
int n, m, k;
int main() {
cin >> n >> m >> k;
// 음수나 0인 경우 양수로 바꿔주기
while(k < 0) {
k += n;
}
// n보다 큰 경우 n보다 작게 만들기
while(k > n) {
k -= n;
}
// 3모가 기준
k -= 3;
// 절대값
m = abs(m + k);
m %= n;
// 나머지가 0이면 n
if(!m) m = n;
cout << m << '\n';
return 0;
}
풀이
음수 포함이라 헷갈려서 while 문을 이용해 노가다로 풀었다. 사실 수학 문제라 한 줄로 해결할 수 있겠지만... 이런 문제는 도통 어떻게 해야할지 몰라서 비효율적으로 풀었다.
result = ((M - 1) + (k - 3) % N + N) % N + 1;
이렇게 풀 수 있다는데, 풀이는 아래 블로그 참조! 또 다시 벽 느끼고... 다시 한 번 도전하러...
'백준' 카테고리의 다른 글
[백준] 29813번 최애의 팀원 C++ 코드 (0) | 2024.12.17 |
---|---|
[백준] 10491번 Quite a problem C++ 코드 (0) | 2024.12.17 |
[백준] 2312번 수 복원하기 C++ 코드 (2) | 2024.12.10 |
[백준] 2912번 백설공주와 난쟁이 C++ 코드 (0) | 2024.12.01 |
[백준] 16978번 수열과 쿼리 22 C++ 코드 (2) | 2024.12.01 |