[문제]
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWNcL9nKpbEDFAV8
[풀이방법]
처음에는 덱으로 해서 K만큼의 숫자를 뒤로 넘겨주고 맨 앞의 원소를 지워주는 과정을 반복해서 값을 구하려고 했는데 마지막 예시
100000 10000000000
여기에서 시간이 너무 오래 걸려서 불가능했습니다.
그래서 찾아보니 요세푸스 점화식을 사용해서 해결할 수 있었어요
요세푸스 점화식 /
N명의 사람 중 K번째의 사람이 자결하는데 마지막까지 살아남는 사람을 구하는 점화식입니다.
https://statkclee.github.io/r-algorithm/r-josephus-problem.html
이 포스트를 보면서 이해했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int T = Integer.parseInt(st.nextToken());
StringBuffer sf = new StringBuffer();
for (int k = 0; k < T; k++) {
st = new StringTokenizer(br.readLine());
long N = Long.parseLong(st.nextToken());
long K = Long.parseLong(st.nextToken());
long result = 0;
for (int i =1; i <= N; i++ ) {
result = (result + K) % i + 1;
}
}
System.out.println(sf.toString());
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'SWEA > D5' 카테고리의 다른 글
[SWEA] 1249. 보급로 (0) | 2020.05.18 |
---|---|
[SWEA] 4613. 러시아 국기 같은 깃발 (0) | 2020.05.04 |
[SWEA] 1824. 혁진이의 프로그램 검증 (0) | 2020.05.04 |
[SWEA 7393][D4][JAVA] 대규의 팬덤활동 (0) | 2019.05.14 |