[백준][1874번] 스택수열
Updated:
내가푼 코드
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Integer> st = new Stack<>();
int max=0;
StringBuilder str = new StringBuilder();
int size = sc.nextInt();
for(int i=1; i<=size; i++){
int num = sc.nextInt();
if(max<num){
while(max<num){
str.append("+\n");
st.push(++max);
}
st.pop();
str.append("-\n");
}else{
if(num != st.peek()){
System.out.println("NO");
return;
}
str.append("-\n");
st.pop();
}
}
System.out.println(str);
}
}
해결법
이 문제는 stack을 사용하여 해결하는 문제다.
max는 현재까지 stack에 추가된수중 가장 큰수이다.
수열을 차례대로 스캔하며
1) max보다 큰 수가 나온다면
해당 수만큼 stack에 push한다.
2) 그외
stack에서 수를 가져와 수열의 수랑 비교한다.
만약다르다면 만들수 없는 수열이기 때문에
“no”를 출력
Leave a comment