import java.io.*;
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();
Stack<Integer> stack = new Stack<>();
stack.push(0);
int pointer = 0;
int n = Integer.parseInt(br.readLine());
int[] array = new int[n];
for (int i=0;i<n;i++) {
array[i] = Integer.parseInt(br.readLine());
}
for (int x : array) {
if (stack.peek() < x) {
for (int i=pointer;i<x;i++) {
stack.push(i+1);
sb.append("+\n");
}
stack.pop();
sb.append("-\n");
pointer = x;
} else if (stack.peek() == x) {
stack.pop();
sb.append("-\n");
} else {
System.out.print("NO");
return;
}
}
System.out.print(sb);
}
}
BufferedWriter를 사용했을 경우에 출력 초과 판정이 나서(이유는 잘 모르겠다..)
StringBuilder를 사용하여 출력 값을 문자열로 구성해서 System.out.print()로 출력했다.
먼저 테스트할 수열을 배열에 넣고, 각 배열(수열)의 원소들에 순서대로 접근하기 위해 for each문을 사용했다.
for each문은 for (int x : 배열 또는 문자열 이름) 형태로 사용되며
입력으로 배열이 들어온다면 배열의 첫 원소부터 끝 원소까지,
문자열이 들어온다면 첫 캐릭터부터 마지막 캐릭터까지 순서대로 변수 x를 통해 반환해준다.
'알고리즘 > 백준 알고리즘(JAVA)' 카테고리의 다른 글
JAVA)10845번 Queue(큐) 구현하기 (0) | 2020.07.14 |
---|---|
JAVA)1406번 stack을 사용하여 editor 만들기, 문자열의 + 연산과 StringBuilder와의 시간 소모 차이 (0) | 2020.07.14 |
JAVA)9012번 스택으로 괄호 판정(VPS 판정) (0) | 2020.07.14 |
JAVA) 9093번 스택(Stack 클래스) 사용해서 단어 뒤집기, BufferedReader/Writer와 StringTokenizer 사용, 시간초과와 메모리초과 극복 (0) | 2020.07.13 |
JAVA)10828번 스택 구현하기(ArrayList 사용) (0) | 2020.07.13 |
알고리즘/백준 알고리즘(JAVA) 카테고리의 다른 글
JAVA)10845번 Queue(큐) 구현하기
JAVA)1406번 stack을 사용하여 editor 만들기, 문자열의 + 연산과 StringBuilder와의 시간 소모 차이
JAVA)9012번 스택으로 괄호 판정(VPS 판정)
JAVA) 9093번 스택(Stack 클래스) 사용해서 단어 뒤집기, BufferedReader/Writer와 StringTokenizer 사용, 시간초과와 메모리초과 극복