[Baekjoon] 10972_λ€μ μμ΄
λ¬Έμ (μΆμ²: https://www.acmicpc.net/problem/10972)
< λ€μ μμ΄ >
λ¬Έμ νμ΄
λ§μ½ 1 2 3 5 4κ° μ£Όμ΄μ‘λ€κ³ μκ°ν΄ 보μ.
λ€μμλΆν° κ°μ νμνλ©΄μ νμ¬ κ°μμ λ€μ κ°μ νμνλ€.
4λ λ§μ§λ§ κ°μ΄λ―λ‘ λμ΄κ°λ€.
5λ₯Ό νμΈνμ λ λ€μ 4λ°μ μμΌλ―λ‘ 5λ³΄λ€ μμ μ μ΄λ―λ‘ λμ΄κ°λ€.
3μ νμΈνμ λ 5,4μ κ°μ΄ 3λ³΄λ€ ν° κ°μ΄ μμΌλ―λ‘ λ€μ μμ΄μ μΆλ ₯νκΈ° μν΄ 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 _10972_ { // λ€μ μμ΄
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());
int arr[] = new int[n];
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
ArrayList<Integer> list = new ArrayList<>();
int num = -1;
int idx = -1;
for (int i = n - 1; i >= 0; i--) {
list.add(arr[i]);
Collections.sort(list, Collections.reverseOrder());
if (list.get(0) != arr[i]) {
for (int j = list.size() - 1; j >= 0; j--) {
if (list.get(j) > arr[i]) {
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 κ°μ μ μΈν κ°μ μμλλ‘ μΆλ ₯νλ€.