728x90
https://www.acmicpc.net/problem/1874
어제 못풀고 다시 도전하고 블로그 참고해서 풀었다.
그리고 오늘 다시 백지에서 풀었는데 성공!
stack 문제이지만, 구현문제를 많이 풀어봐야겠다고 느끼는 문제였다.
package BAEKJOON.Silver.Ⅲ;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class NO1874_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [] arr = new int[n];
//스택을 사용해야 하는 문제
Stack<Integer> stack = new Stack<>();
// + 와 - 를 담을 List 생성
ArrayList<String> list = new ArrayList<>();
// 입력을 받은 배열의 index 를 사용하기 위함
int order = 0;
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
// 1부터 n 까지 차례대로 담아준다.
for (int i = 1; i <= n; i++) {
stack.push(i);
// push 하면 + 추가
list.add("+");
// stack 이 비어있지 않을동안
while(!stack.isEmpty()) {
// stack을 확인했는데 arr[order] 와 같으면 꺼내고 - 추가
if(stack.peek() == arr[order]) {
stack.pop();
list.add("-");
// 다음 arr[order] 을 확인하기 위해 ++ 해준다.
order++;
} else {
// 없으면 빠져나가고 다시 stack push
break;
}
}
}
// stack 이 전부 없으면 출력 가능
if (stack.isEmpty()) {
for (String s : list) {
System.out.println(s);
}
// 없으면 NO
} else {
System.out.println("NO");
}
}
}
728x90
'Algorithm & SQL > BAEKJOON' 카테고리의 다른 글
백준 JAVA 11047 동전0 (0) | 2022.08.13 |
---|---|
백준 JAVA 1977 프린터 큐 (0) | 2022.08.12 |
백준 JAVA 4949 균형잡힌 세상 (0) | 2022.08.11 |
백준 JAVA 11651 좌표 정렬하기2 (0) | 2022.08.11 |
백준 JAVA 11650 좌표 정렬하기 (0) | 2022.08.11 |
댓글