백준_1874 스택 수열 (스택)Algorithm/Algorithm 문제2024. 1. 8. 20:21
Table of Contents
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class BJ_1874 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int i, temp, num, popNum;
int n = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
num=1;
for(i=0; i<n; i++) {
temp = Integer.parseInt(br.readLine());
if(temp > num-1) {
while(temp > num-1) {
stack.push(num++);
sb.append('+').append('\n');
}
stack.pop();
sb.append('-').append('\n');
}
else {
if(temp < stack.pop()) {
sb = new StringBuilder();
sb.append("NO");
break;
}
else { // 이 경우는 pop한 수가 temp랑 같을 경우. 작을 경우는 이론상 말이 안됨
sb.append('-').append('\n');
}
}
}
System.out.println(sb);
}
}
안쪽 else에서 작을 경우가 있을 수 없는 이유.
바깥 else문에 들어왔다는 것은 temp가 오름차수 수보다 작다는 것.
안쪽 else에서는 stack의 top이 temp보다 작지 않다는 것.
stack의 top이 n이라고 한다면 이미 n보다 크고 오름차수보다 작은 수들은 입력됐다가 pop됐다는 것인데,
문제의 입력 값은 중복되지 않기에 오름차수 수 보다 작고 n보다 큰 수가 temp일 수는 없다.
따라서 안쪽 else문은 결국 temp == top 인 경우만 해당한다.
'Algorithm > Algorithm 문제' 카테고리의 다른 글
백준_2164 카드2 (큐) (0) | 2024.01.10 |
---|---|
백준_17298 오큰수 구하기 (스택) (0) | 2024.01.09 |
백준_11003 최솟값 찾기 (슬라이딩 윈도우) (0) | 2023.11.29 |
백준_12891 DNA 비밀번호 (슬라이딩 윈도우) (0) | 2023.11.24 |
백준_1253 좋다 (투포인터) (3) | 2023.11.23 |
@kjyyjk :: 녕의 학습 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!