๋ฌธ์
https://www.acmicpc.net/problem/1874'
์ฝ๋(JAVA)
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Stack<Integer> stack = new Stack<>();
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
for(int i =0 ;i < n ; i++) arr[i] = Integer.parseInt(br.readLine());
int cnt = 1;
int i;
for(i =0 ; i < n ; i++) {
if(stack.isEmpty()) {
if(cnt>arr[i]) break;
stack.push(cnt++);
sb.append("+\n");
}
if(arr[i] > stack.peek()) {
if(cnt > arr[i]) break;
while(stack.peek() != arr[i]) {
stack.push(cnt++);
sb.append("+\n");
}
}
else if(arr[i] < stack.peek()) {
while(stack.peek() != arr[i]) {
stack.pop();
sb.append("-\n");
}
}
if(arr[i] == stack.peek()) {
stack.pop();
sb.append("-\n");
}
}
if(i != n || !stack.isEmpty()) System.out.println("NO");
else System.out.print(sb.toString());
}
}
์ค๋ช
์ ๋ ฅ: BufferedReader
์ถ๋ ฅ: StringBuilder
๊ธฐ๋ณธ์ ์ผ๋ก,
ํ์ฌ ๋น๊ตํ๊ณ ์๋ ๋ฐฐ์ด ๊ฐ(arr[i])๊ณผ ํ์ฌ stack์ ๋งจ ์์ ๊ฐ์ ๋น๊ต.
If(arr[i] > stack.peek())์ด๋ผ๋ฉด,
์์ง ์คํ์ ํด๋น ๊ฐ(arr[i])๊ฐ ์๋ค์ด๊ฐ ์๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก stack.peek() == arr[i]๊น์ง ์คํ์ cnt๋ฅผ push
If(arr[i] < stack.peek())์ด๋ผ๋ฉด,
์คํ์์ ํด๋น ๊ฐ์ด ๋ค์ด์๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก, stack.pop๊ฐ์ด arr[i]์ผ๋๊น์ง pop
์ด๋, ์ฃผ์ ํ ์ .
pushํ ๋, ํ์ฌ ์คํ์ ๋ค์ด๊ฐ ๊ฐ(cnt)๋ณด๋ค ๋น๊ต ํ ๊ฐ(arr[i])๊ฐ ๋ ํฌ๋ค๋ฉด
์คํ์๋ ๊ณ์ arr[i]๋ณด๋ค ํฐ๊ฐ๋ง ์์ด๊ฒ ๋๊ณ , ๊ฒฐ๊ตญ ๋ฌดํ๋ฃจํ๋ฅผ ๋๊ฒ ๋จ.
์ด ๋ถ๋ถ์ ๋ํ ๋ถ๊ธฐ๋ฌธ์ ์ ํ์ฉํด์ผ ๋ฉ๋ชจ๋ฆฌ์ด๊ณผ, ์๊ฐ์ด๊ณผ๊ฐ ๋์ง ์์ (ใใธ๏ฟฃใ)
๋ฐ๋ก(๋ด ์ฝ๋ ๊ธฐ์ค!)
1
1
+
-
3
1
2
3
+
-
+
-
+
-
4
4
2
3
1
NO
'๐ ์๊ณ ๋ฆฌ์ฆ > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LeetCode] 735. Asteroid Collision (ํด์, Java ํ์ด) (0) | 2023.07.21 |
---|---|
[LeetCode] 445. add Two Numbers 2 (ํด์, Java ํ์ด) (0) | 2023.07.17 |
[SWEA] 1223๋ฒ ๊ณ์ฐ๊ธฐ2 (Java) (0) | 2021.08.20 |
[๋ฐฑ์ค]1158๋ฒ ์์ธํธ์ค๋ฌธ์ (0) | 2021.08.10 |
[๋ฐฑ์ค]1918๋ฒ ํ์ํ๊ธฐ์ (0) | 2021.08.09 |