https://www.acmicpc.net/problem/10811
1. 아이디어
구간에 대한 스왑을 반복문으로 구현하면 간단하게 해결할 수 있다.
2. 문제풀이
입력으로 주어지는 구간에 대해 스왑 메서드를 만들어서 반복 실행하는 방식으로 구현했다. 스왑은 구간의 양끝 값을 임시 변수를 활용해 교환하면 되는데 이때 구간의 중간에서 멈춰야하는 점에 주의해야한다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] arr = new int[1 + N];
for (int i = 1; i <= N; i++) {
arr[i] = i;
}
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
swap(arr, a, b);
}
for (int i = 1; i <= N; i++) {
sb.append(arr[i]).append(" ");
}
bw.write(sb.toString());
bw.flush();
}
private static void swap(int[] arr, int a, int b) {
for (int i = a; i <= (a + b) / 2; i++) {
int tmp = arr[i];
arr[i] = arr[b + a - i];
arr[b + a - i] = tmp;
}
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 2851번 - 슈퍼 마리오 [Java] (0) | 2025.01.17 |
---|---|
[백준] 2869번 - 달팽이는 올라가고 싶다 [Java] (0) | 2025.01.17 |
[백준] 2935번 - 소음 [Java] (0) | 2025.01.16 |
[백준] 10163번 - 색종이 [Java] (0) | 2025.01.16 |
[백준] 10984번 - 내 학점을 구해줘 [Java] (0) | 2025.01.16 |