๋ฌธ์ (์ถ์ฒ:https://www.acmicpc.net/problem/10973)
< ์ด์ ์์ด >
๋ฌธ์ ํ์ด
๋ง์ฝ 1 2 5 3 4๊ฐ ์ฃผ์ด์ก๋ค๊ณ ์๊ฐํด ๋ณด์.

๋ค์์๋ถํฐ ๊ฐ์ ํ์ํ๋ฉด์ ํ์ฌ ๊ฐ์์ ๋ค์ ๊ฐ์ ํ์ํ๋ค.
4๋ ๋ง์ง๋ง ๊ฐ์ด๋ฏ๋ก ๋์ด๊ฐ๋ค.
3์ ํ์ธํ์ ๋ ๋ค์ 4๋ฐ์ ์์ผ๋ฏ๋ก 3๋ณด๋ค ํฐ ์ ์ด๋ฏ๋ก ๋์ด๊ฐ๋ค.
5๋ฅผ ํ์ธํ์ ๋ 3,4 ๊ฐ์ด 5๋ณด๋ค ์์ ๊ฐ์ด ์์ผ๋ฏ๋ก ๋ค์ ์์ด์ ์ถ๋ ฅํ๊ธฐ ์ํด 4๋ก ๊ต์ฒดํ๋ค. ๊ทธ ํ์ ๋จ์ ๊ฐ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class _10973_ { // ์ด์ ์์ด
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
st = new StringTokenizer(bf.readLine());
int arr[] = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
ArrayList<Integer> list = new ArrayList<>();
int idx = -1, num = -1;
for (int i = n - 1; i >= 0; i--) {
list.add(arr[i]);
Collections.sort(list);
if (arr[i] != list.get(0)) {
for (int j = list.size() - 1; j >= 0; j--) {
if (arr[i] > list.get(j)) {
num = list.get(j);
break;
}
}
idx = i;
break;
}
}
if (num == -1) {
System.out.println(-1);
} else {
boolean flag = false;
for (int i = 0; i < idx; i++) {
bw.write(arr[i] + " ");
}
bw.write(num + " ");
for (int i = list.size() - 1; i >= 0; i--) {
if (!flag && list.get(i) == num) {
flag = true;
continue;
}
bw.write(list.get(i) + " ");
}
bw.flush();
}
}
}
๋ณ์)
n : ์์ด ์
arr : ์์ด ๊ฐ
list : ํ์ฌ ๊ฐ๋ณด๋ค ์์ ์๋ฅผ ์ฐพ๊ธฐ ์ํ ๋ฆฌ์คํธ
num, idx : ํ์ฌ ๊ฐ๋ณด๋ค ์ ๊ฐ, ๊ต์ฒดํ ์ธ๋ฑ์ค
์์ด ๊ฐ์ n์ ์ ๋ ฅ๋ฐ๋๋ค. ๋ฐฐ์ด์ ์์ด ๊ฐ์ ์ ์ฅํ๋ค. ๋ค์์๋ถํฐ ๊ฐ์ ํ์ธํ๋ฉด์ ๋ค์ ๊ณผ์ ์ ์ํํ๋ค.
1) list์ ๊ฐ์ ์ถ๊ฐํ๋ค.
2) list๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ํ 0๋ฒ์งธ ๊ฐ๊ณผ ํ์ฌ ๊ฐ์ด ์ผ์นํ๋์ง ํ์ธํ๋ค.
3) ์ผ์นํ๋ค๋ฉด ํ์ฌ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ด ์์ผ๋ฏ๋ก ๊ณ์ํด์ ๋ฐ๋ณตํ๋ค. ์ผ์นํ์ง ์๋๋ค๋ฉด ํ์ฌ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ด ์๋ค๋ ๋ป์ด๋ฏ๋ก list์ ์๋ ๊ฐ์ ํ์ํ์ฌ ํ์ฌ ๊ฐ๋ณด๋ค ์์ ๊ฐ ์ค์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ์ num์ ์ ์ฅํ๋ค. idx๋ฅผ ํ์ฌ ์์น๋ก ์ ์ฅํ ํ ์ข ๋ฃํ๋ค.
๋ง์ฝ num์ด -1์ด๋ผ๋ฉด ๋ค์ ์์ด์ด ์๋ค๋ ๋ป์ด๋ฏ๋ก -1์ ์ถ๋ ฅํ๋ค. num ๊ฐ์ด ์๋ค๋ฉด arr์ 0๋ฒ์งธ๋ถํฐ idx์ ๊น์ง ๊ฐ์ ์ถ๋ ฅํ๋ค. ๊ทธ ํ์ num ๊ฐ์ ์ถ๋ ฅํ๋ค. list๋ฅผ ๋ค์์๋ถํฐ num ๊ฐ์ ์ ์ธํ ๊ฐ์ ์์๋๋ก ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 2251_๋ฌผํต (0) | 2024.04.22 |
---|---|
[Baekjoon] 1018_์ฒด์คํ ๋ค์ ์น ํ๊ธฐ (1) | 2024.04.19 |
[Baekjoon] 10972_๋ค์ ์์ด (0) | 2024.04.17 |
[Baekjoon] 1455_๋ค์ง๊ธฐ II (0) | 2024.04.16 |
[Baekjoon] 2697_๋ค์์ ๊ตฌํ๊ธฐ (0) | 2024.04.15 |