λ¬Έμ
https://www.acmicpc.net/problem/2493
λ΄ λ¬Έμ νμ΄
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class BOJ_2493 {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder out = new StringBuilder();
st = new StringTokenizer(in.readLine());
int n = Integer.parseInt(st.nextToken());
int[] result = new int[n];
Deque<int[]> que = new ArrayDeque<>();
st = new StringTokenizer(in.readLine());
for(int i = 0; i < n; i++) {
int now = Integer.parseInt(st.nextToken());
if(i == 0 || que.size() == 0) {
result[i] = 0;
que.add(new int[]{i, now});
continue;
}
else {
// μ΄μ μκ° λ ν° κ²½μ°
if(que.getLast()[1] > now) {
result[i] = que.getLast()[0] + 1;
que.add(new int[]{i, now});
}
// μ΄μ μκ° λ μμ κ²½μ°
else {
while(que.size() > 0) {
if(que.getLast()[1] < now) que.removeLast(); // λ ν° μ λ§λ λκΉμ§ λ€μμλΆν° κ° μμ
else {
result[i] = que.getLast()[0] + 1; // λ ν° μ λ§λ¬μ λ
break;
}
}
que.add(new int[]{i, now});
}
}
}
for(int i = 0; i < n; i++) {
out.append(result[i]);
if(i < n-1) out.append(" ");
}
System.out.println(out);
}
}
.π μ€ν λ¬Έμ !
- 첫 λ²μ§Έ νμ΄κ±°λ, λ±μ΄ λΉμ΄μμ κ²½μ° λΉκ΅ μμ΄ λ°λ‘ λ±μ κ°μ μΆκ°νλ€.
- λ±μ΄ λΉμ΄μμ§ μμ κ²½μ°μλ λ±μ λ§μ§λ§ μμ νμ¬ μ λ ₯λ νμ λΉκ΅νλ€.
- λ±μ κ°μ₯ λ§μ§λ§ νλ³΄λ€ νμ¬ νμ΄ λ ν΄ κ²½μ°
λ±μ λ§μ§λ§ νμ μ무 μλ―Έκ° μμ΄μ§λ―λ‘ λ°λ‘ λ±μμ removeLast ν΄μ£Όμλ€.
μ΄μ κ°μ νμμ λ°λ³΅νλ€κ° νμ¬ νλ³΄λ€ λ ν° νμ λ§λλ©΄ ν΄λΉ νμ μμΉλ₯Ό λ°μμ resultμ κΈ°λ‘,
νμ¬ ν λν λ€λ₯Έ νμ λ μ΄μ λ₯Ό λ°μ κ°λ₯μ±μ΄ μμΌλ―λ‘ λ±μ λ§μ§λ§μ addνλ€.
λ±μ΄ λΉ λκΉμ§ λ ν° νμ λ§λμ§ λͺ»ν κ²½μ°μλ νμ¬ νμ λ μ΄μ λ₯Ό μ μ μλ νμ΄ μλ€κ³ νλ¨,
λͺ¨λ λΉμ΄μκ² λ λ±μ νμ¬ νμ μ 보λ₯Ό addνλ€. - λ±μ κ°μ₯ λ§μ§λ§ νμ΄ νμ¬ νλ³΄λ€ λ ν΄ κ²½μ°
λ°λ‘ λ μ΄μ λ₯Ό μ μ μλ νμ μ°Ύμ κ²μΌλ‘ νλ¨, κ°μ₯ λ§μ§λ§ νμ μ 보λ₯Ό resultμ κΈ°λ‘νκ³
νμ¬ νμ λν μ 보λ λ±μ λ§μ§λ§μ addν΄μ£Όμλ€.
π‘ νΌλλ°±
- μ²μμ StringBuilderλ‘ μΆλ ₯νμ§ μμλλ μκ° μ΄κ³Όκ° λ°μνλλ°, μΆλ ₯λ§ λ°κΏμ£ΌλκΉ λ°λ‘ ν΅κ³Ό !
- μμΌλ‘λ κ³μ StringBuilder κΌ μ¬μ©ν΄μΌκ² λ€. (μκ° 2λ°°μ΄μ μ°¨μ΄λ¬μ)
'2οΈβ£ Java > Problem Solving' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java Algorithm] λΆ BOJ #5427 (0) | 2022.08.08 |
---|---|
[Java Algorithm] μ¨λ°κΌμ§ 3 BOJ #13549 (0) | 2022.08.08 |
[Java Algorithm] λ²½ λΆμκ³ μ΄λνκΈ° BOJ #2206 (0) | 2022.08.08 |
[Java Algorithm] μ κΈ°ν μμ BOJ #2023 (0) | 2022.08.05 |
[Java Algorithm] ν±λλ°ν΄ BOJ #14891 (0) | 2022.08.03 |
λκΈ