반응형
문제
N까지의 수열이 있을 때 스택으로 출력이 가능한지 여부 및 push pop 순서 출력
풀이
다음의 규칙을 통해서 문제를 해결했다.
- 입력받은 값이 현재 수열값보다 같거나 작을때까지 push한다. (”+” 출력)
- 만약 스택 top의 값이 입력받은 값과 같다면 pop한다. (”-” 출력)
- 만약 스택 top의 값이 입력받은 값과 다르다면 만들어질 수 없는 수열이기 때문에 NO를 출력한다.
import java.util.Scanner;
import java.util.Stack;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<Integer> stack = new Stack<>();
int N = sc.nextInt();
int value = 1;
StringBuilder sb = new StringBuilder();
for(int i=0; i<N; i++){
int target = sc.nextInt();
while(value <= target){
stack.push(value++);
sb.append("+").append("\n");
}
if(target == stack.peek()){
stack.pop();
sb.append("-").append("\n");
}else{
sb = new StringBuilder().append("NO");
break;
}
}
System.out.println(sb);
}
}
결과
반응형
'백준' 카테고리의 다른 글
[JAVA] 백준 11286 우선순위 큐 (0) | 2024.01.19 |
---|---|
[JAVA] 백준 2164 큐 (0) | 2024.01.19 |
[JAVA] 백준 2015 누적 합 (1) | 2024.01.19 |
[JAVA] 백준 2167 누적합 (0) | 2024.01.19 |
[JAVA] 백준 14929 합정렬 (0) | 2024.01.19 |