728x90
문제
접근 방법
1. 스택을 활용하여 들어오는 값이 시작값(s)보다 크면 값을 push 해주고, 팝을하여 해당번호를 출력합니다.
2. 만약 스택에 넣은 값의 제일 최상단이 들어오는 값이랑 들어오는 값이 다르다면 NO를 출력후 리턴합니다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
private static StringBuilder sb;
private static BufferedReader br;
private static StringTokenizer st;
private static int N;
private static Stack<Integer> stack = new Stack<Integer>();
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
N = Integer.parseInt(br.readLine());
}
//실행
public static void process() throws Exception{
int s = 0;
while(N>0){
int input = Integer.parseInt(br.readLine());
if(input>s){
for(int i = s+1; i<=input ; i++){
stack.push(i);
sb.append('+').append("\n");
}
s = input;
}else if(stack.peek()!=input){
System.out.println("NO");
return;
}
stack.pop();
sb.append('-').append("\n");
N--;
}
System.out.println(sb.toString());
}
public static void main(String[] args) throws Exception {
input();
process();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 10859번 : 뒤집어진 소수 (0) | 2024.04.19 |
---|---|
[Java] 백준 14232번 : 보석 도둑 (0) | 2024.04.18 |
[Java] 백준 14718번 : 용감한 용사 진수 (0) | 2024.04.16 |
[Java] 백준 5883번 : 아이폰 9S (0) | 2024.04.16 |
[Java] 백준 2304번 : 창고 다각형 (0) | 2024.04.16 |