티스토리 뷰
728x90
https://www.acmicpc.net/problem/1242
- 해설 :
요세푸스 순열(https://recordofwonseok.tistory.com/96)과 똑같은 문제인데 내가 몇 번째로 탈락하는지만 추가적으로 찾으면 되는 문제이다.
- 풀이 :
옛날에 풀었던 문제라 기억이 잘 안난다. 소스를 참고로 해석해보자면 n은 퇴장당한 사람의 수이다. 매 퇴장당하는 경우마다 mod값을 이용하여 다음 퇴장당할 사람을 계산하는 방식인 것 같다.
- 소스코드 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <bits/stdc++.h>
using namespace std;
int N, M, K;
int main(){ios_base::sync_with_stdio(false); cout.tie(NULL); cin.tie(NULL);
cin >> N >> M >> K;
int n;
// nM = M 의 변화하는 위치
for (n = 1; n <= N; n++){
int nM= M%(N-n+1)==0? N-n+1:M%(N-n+1);
if (K==nM) break;
K = K>nM ? K-nM : (K-nM)+N-n+1;
}
cout << n << '\n';
return 0;
}
|
cs |
320x100
'Algorithm > Math' 카테고리의 다른 글
(Python) - BOJ(1929번) : 소수 구하기 (0) | 2022.01.28 |
---|---|
(Python) - BOJ(1339번) : 단어 수학 (0) | 2022.01.26 |
(Python) - BOJ(1105번) : 팔 (0) | 2022.01.25 |
(Python) - BOJ(1041번) : 주사위 (0) | 2022.01.25 |
(Python) - 프로그래머스 : N개의 최소공배수 (0) | 2022.01.24 |
댓글
© 2022 WonSeok, All rights reserved