티스토리 뷰

Algorithm/Math

(C++) - BOJ(1242번) : 소풍

하눤석 2022. 1. 26. 09:25
728x90

https://www.acmicpc.net/problem/1242

 

1242번: 소풍

동호와 동호네 반 친구들은 산정호수로 소풍을 갔다. 총 N명이 소풍에 참가했고, KIN 게임을 하려고 한다. 이 게임은 다음과 같이 진행된다. 무대에 올라간 N명은 1번부터 N번까지 시계방향으로 원

www.acmicpc.net


  • 해설 : 

요세푸스 순열(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
댓글
© 2022 WonSeok, All rights reserved