https://www.acmicpc.net/problem/1021
์ค๋ต๋ ธํธ(ํธ๋ ๋์ ์ฌ๊ณ ๊ณผ์ ๋ฐ ๊ฐ์ ์ )
์ค๋ต์ ์๋๊ณ , ๋ฑ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฒ์ ์ ํ๊ณ ์ฒ์ ํ์ด๋ณด๋ ๋ฌธ์ ์๋ค. ArrayDeque์ด ์๋ ๊ฑธ ์๊ณ ์์ด์ ์ด๊ฑฐ๋ก ํ์ด๋ณด๋ ค๊ณ ํ๋๋ฐ ์ค๊ฐ๊ฐ ํ์์ ์ํด indexOf๊ฐ ์๋ ๋ดค๋๋ ์์๋ค. ๊ฒ์์ ํด๋ณด๋ LinkedList๋ก ์ธ์คํด์ค๋ฅผ๋ง๋ค์ด๋ ๋ฑ ์ฒ๋ผ ์ธ ์ ์์ด์ ํด๋น ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
์ฒ์์ ๋ฌธ์ ์ดํด๊ฐ ์๋์๋ค. N์ ์ฃผ๊ณ ๋ช๋ฒ์งธ๋ฅผ ๋ฝ์ ๊ฑด์ง๊ฐ ๋ฌธ์ ์๋๋ฐ, N๊น์ง์ ์๊ฐ ์ด๋ค ์์๋ก ์์ฌ์์ ์ค ์๊ณ ์ด๋ ๊ฒ ๋ฝ๋ ์๊ฐํ๋ค. ๊ทธ๋ฌ๋ค ๋ฌด์จ ์๋ฅผ ๋ฝ๋๊ฒ ์๋๋ผ ๋ช๋ฒ ์งธ๋ฅผ ๋ฝ๋ ๊ฒ์ด๋ฏ๋ก ์์น๋ฅผ ๊ณ ๋ คํ๋ ๋ฌธ์ ์๋ค. ๋ฐ๋ผ์ ๊ทธ๋ฅ 1๋ถํฐ N๊น์ง ์ญ ์ฑ์์ฃผ๋ฉด ๋์ด๋ค.
์ ๋ต์ฝ๋
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int pick = sc.nextInt();
int cnt = 0;
LinkedList<Integer> dq = new LinkedList<>();
// ArrayDeque ์ ์ฌ์ฉํ deque์ indexOf๊ฐ ์๋ค.
// Deque<Integer> dq = new ArrayDeque<>();
for (int i = 1; i <= n; i++) {
dq.offer(i);
}
for (int i = 0; i < pick; i++) {
int t = sc.nextInt();
// ํ๊ฒ ์์น ํ์
int target = dq.indexOf(t);
int m= dq.size() / 2;
if (!dq.isEmpty() && t != dq.peekFirst()) {
if (target <= m) { // ํ๊ฒ์ด ์ผ์ชฝ์ ์์นํ ๊ฒฝ์ฐ -> ์ผ์ชฝ์ผ๋ก ๋๋ฆผ
for (int j = 0; j < target; j++) {
dq.addLast(dq.pollFirst());
cnt++;
}
int tmp = dq.pollFirst();
// System.out.println(tmp);
} else {
for (int j = 0; j < dq.size() - target; j++) {
dq.addFirst(dq.pollLast());
cnt++;
}
int tmp = dq.pollFirst();
// System.out.println(tmp);
}
} else {
dq.pollFirst();
}
}
System.out.println(cnt);
}
}
์ฃผ์ ์ฒ๋ฆฌํด๋ ํ๋ฆฐํธ๋ฌธ์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ด ์์นํด ์๋ ๋ณด๋ ค๊ณ ๋๋ฒ๊น ์ฉ์ผ๋ก ๋ฃ์ด๋ ๊ฒ์ด๋ค.
IDE๊ฐ ์๋ ํ๊ฒฝ์์๋ offer, poll, addLast, addFirst, pollLast, pollFirst, indexOf์ ๊ฐ์ ๋ฉ์๋๋ค์ด ์๋ ์ง ์ ์ ์์ผ๋ฏ๋ก ๋ฐ๋ณตํด์ ๋ฑ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ ์ ๋ฐ์ ์์ ๊ฒ ๊ฐ๋ค.
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^
'OJ๐ผ > ์ค๋ต๋ ธํธ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][JAVA] 2910๋ฒ: ๋น๋์ ๋ ฌ (0) | 2024.01.27 |
---|---|
[BOJ][JAVA] 1181: ๋จ์ด์ ๋ ฌ (0) | 2024.01.23 |
[BOJ][JAVA] 11068: ํ๋ฌธ์ธ ์ (0) | 2024.01.14 |
[BOJ][JAVA] 1260 : DFS์ BFS (0) | 2024.01.13 |
[BOJ][JAVA] 1158 : ์์ธํธ์ค ๋ฌธ์ (0) | 2024.01.11 |