문제 바로가기 : https://www.acmicpc.net/problem/17827
메모리 : 48744KB
시간 : 616ms
언어 : Java 11
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int V = Integer.parseInt(st.nextToken());
int[] arr = new int[N + 1];
st = new StringTokenizer(br.readLine());
for (int i = 1; i <= N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < M; i++) {
int num = Integer.parseInt(br.readLine()) + 1;
if (num <= N) {
sb.append(arr[num]).append("\n");
} else {
// 달팽이집으로 들어가기
int tmp = (num - (V - 1)) % (N - (V - 1));
// System.out.println("tmp" + (num - (V - 1)) % (N - (V - 1)));
if (tmp == 0) {
sb.append(arr[N]).append("\n");
} else {
sb.append(arr[tmp + (V - 1)]).append("\n");
}
}
}
System.out.print(sb);
}
}
사이클을 도는 부분을 패턴으로 이해하고 해당 요청에 패턴에 몇 번째에 매칭되는지 찾으면 된다! 그냥 몇 가지를 손으로 써보며 공식을 찾으면 된다.
'Algorithm' 카테고리의 다른 글
[Algo] 백준 28071 승형이의 사탕 사기 JAVA (0) | 2024.05.08 |
---|---|
[Algo] 백준 1174 줄어드는 수 JAVA (0) | 2024.05.08 |
[Algo] 백준 25421 조건에 맞는 정수의 개수 JAVA (1) | 2024.05.08 |
[Algo] 백준 19699 소-난다JAVA (0) | 2024.05.08 |
[Algo] 백준 20115 에너지 드링크 JAVA (0) | 2024.05.08 |