728x90
[백준] 200 - 자료구조 1 : 스택 수열
{ 문제 이해 }
[예제 입력 1] 에서 입력 값의 의미는 다음과 같다.
맨 첫줄 ' 8 ' : " 1 ~ 8의 원소를 가지는 배열을 만들어 달라. " 요구하는 배열은 다음과 같다.
두번째 줄부터 9번째 줄 : " [4, 3, 6, 8, 7, 5, 2, 1] 의 배열을 요구한다. "
※ 조건 : 스택은 항상 오름차순이 성립되어야 한다!
위 조건을 만족하며, 스택을 이용하여 배열을 만드는 과정을 보여라. 라는 문제이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
int stack_in = 0;
while(n-- > 0){
int num = Integer.parseInt(br.readLine());
if (num > stack_in){
for(int i = stack_in + 1; i <= num; i++){
stack.push(i);
sb.append('+').append('\n');
}
stack_in = num;
}
else if(stack.peek() != num){
System.out.println("NO");
return;
}
stack.pop();
sb.append('-').append('\n');
}
System.out.println(sb);
}
} // Main
1. 내장된 Stack 자료형을 활용하자.
2. 별도의 배열을 생성하여, 만들고자 하는 배열을 입력받는것이 아닌 입력값을 즉각 처리하자.
3. 다시 풀어보자.
728x90
'백준 > 코드 플러스 (알고리즘 기초 - 1)' 카테고리의 다른 글
[백준] 200 - 자료구조 1 : 큐 (10845번 JAVA) (0) | 2023.01.03 |
---|---|
[백준] 200 - 자료구조 1 : 에디터 (!) (1406번 JAVA) (0) | 2023.01.03 |
[백준] 200 - 자료구조 1 : 괄호 (9012번 JAVA) (0) | 2023.01.03 |
[백준] 200 - 자료구조 1 : 단어 뒤집기 (9093번 JAVA) (0) | 2023.01.03 |
[백준] 200 - 자료구조 1 : 스택 (10828번 JAVA) (0) | 2023.01.02 |