[PS] BOJ 10811 ๋ฐ๊ตฌ๋ ๋ค์ง๊ธฐ
ํ๊ทธ: PS
์นดํ ๊ณ ๋ฆฌ: PS
๋ฌธ์
์์ค ์ฝ๋
๋ฌธ์ ์ ํต์ฌ์ ๋ฐฐ์ด์ ๊ตฌ๊ฐ์ ๋ฐ๋๋ก ๋ค์ง๋ ๋ถ๋ถ์ ๊ตฌํํ๋ ๊ฒ์ด๋ค. ์๋ฅผ๋ค์ด 1 ~ 4 ๊ตฌ๊ฐ์ ๋ค์ง์ผ๋ฉด ์๋์ ๊ฐ๋ค.
4 index -> 1 index 3 index -> 2 index 2 index -> 3 index 1 index -> 4 index
ํ์ ๊ฐ์ ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ
5 index -> 1 index 4 index -> 2 index 3 index -> 3 index 2 index -> 4 index 1 index -> 5 index
์ฒ์์ ์ ๋ ๊ฒ ์ซ์๋ก๋ง ์ฐ๋ฉด์ ํจํด์ ์ฐพ์ผ๋ ค๊ณ ํ๋๋ฐ ๊ท์น์ด ์ ์๋ณด์ฌ์ ๊ทธ๋ฆผ์ ๊ทธ๋ ค๋ดค๋ค.
๋ฐฐ์ด ๋ค์ง๊ธฐ
์๋ณธ ๋ฐฐ์ด์์ ๋ค์ง๊ณ ์ถ์ ๋ถ๋ถ๋ง ์์ ๋ฐฐ์ด์ ์ ์ฅํด ๋ ๋ค์ ๋ค์ ์๋ณธ ๋ฐฐ์ด์ ๋ฎ์ด์ฐ๋ ํ์์ผ๋ก ํ์๋ค.
๊ทธ๋ฆผ์ผ๋ก ๋ณด๋ฉด ๊ฒฐ๊ตญ ๋งจ๋ค์ ๋งจ ์์ ์์น๋ฅผ ๊ณ์ํด์ ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ ์ ์ ์๋ค.
๋ฌธ์ ์์ i
๊ฐ ๋งจ ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค์ด๊ณ , j
๊ฐ ๋งจ๋ง์ง๋ง ์ธ๋ฑ์ค์์ ์ ์ ์๋ค.
๊ฒฐ๊ตญ arr[i] = arr[j]
์ ๊ฐ์ ์ฝ๋๊ฐ ํ์ํ๋ค. ์ด์ ๋ฐ๋ณต ํ์๋ง ์์ฑํด ์ฃผ๋ฉด ๋๋ค.
1
2
3
for (int c = 0; c <= T; c++, j--, i++) {
tmpArr[i] = arr[j];
}
์ด๋ ๋ฐ๋ณต ํ์๋ 1 4
๊ฐ ์
๋ ฅ๋๋ ๊ฒฝ์ฐ 4
๊ฐ ๋๋ค. ์ฆ ๋ฐ๋ณต ํ์๋ ์
๋ ฅ์์ ์ ์ ์๊ณ , ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ง ์กฐ์ ํด ์ฃผ๋ฉด ๋๋ค. ๊ทธ๋ฆผ์ฒ๋ผ i ์์ ์์ํ๋ ์ธ๋ฑ์ค๋ 1์ฉ ์ฆ๊ฐํ๊ณ j ์์ ์์ํ๋ ์ธ๋ฑ์ค๋ 1์ฉ ๊ฐ์ํ๋ ๊ฒ์ ์ ์ ์๋ค.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public class Boj_10811 {
static FastReader scan = new FastReader();
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
input();
}
static void input(){
int n = scan.nextInt();
int m = scan.nextInt();
int[] arr = new int[n + 1];
for (int k = 1; k <= n; k++) {
arr[k] = k;
}
for (int z = 0; z < m; z++) {
int i = scan.nextInt();
int j = scan.nextInt();
int T = j-i;
int[] tmpArr = new int[arr.length];
for (int c = 0; c <= T; c++, j--, i++) {
tmpArr[i] = arr[j];
}
for (int k = 0; k < tmpArr.length; k++) {
if (tmpArr[k] != 0) {
arr[k] = tmpArr[k];
}
}
}
System.out.println(Arrays.toString(arr).replace("[","").replace("]","").replace(",","").substring(2));
}
static class FastReader {
BufferedReader br;
StringTokenizer st;
public FastReader() {
br = new BufferedReader(new InputStreamReader(System.in));
}
public FastReader(String s) throws FileNotFoundException {
br = new BufferedReader(new FileReader(new File(s)));
}
String next() {
while (st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
long nextLong() {
return Long.parseLong(next());
}
double nextDouble() {
return Double.parseDouble(next());
}
String nextLine() {
String str = "";
try {
str = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
}
}
๋๊ธ๋จ๊ธฐ๊ธฐ