728x90
반응형
https://www.acmicpc.net/problem/2493
풀이
저는 Stack int 배열을 이용해 풀었습니다.
처음에 테스트 케이스를 받고 그 수만큼 반복해줍니다.
처음 수를 받자마자 넣는 것이 아니라 stack이 비어있는 체크부터 해줍니다.(처음엔 어차피 0이므로)
stack에서 꺼낼려고 하는 수가 입력받은 수보다 크면 꺼낼려고 하는수의 배열 0번째(위치)를 출력해줍니다.
아닐 경우 스택에서 값을 빼줍니다.
스택이 비어있을 경우 아무도 신호를 받지 못하므로 0을 출력해줍니다.
Stack에는 {위치, 값}을 입력해줍니다.
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws NumberFormatException,IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<int[]> stack = new Stack<>();
int size = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i = 1; i <= size; i++) {
int num = Integer.parseInt(st.nextToken());
while(!stack.isEmpty()) {
if(stack.peek()[1] >= num) {
sb.append(stack.peek()[0]).append(" ");
break;
}
stack.pop();
}
if(stack.isEmpty()) {
sb.append("0 ");
}
stack.push(new int[] {i, num});
}
System.out.print(sb);
}
}
728x90
반응형
'백준 > 1 - 5000' 카테고리의 다른 글
[백준] 4889번 : 안정적인 문자열(JAVA) (0) | 2021.07.30 |
---|---|
[백준] 1918번 : 후위 표기식(JAVA) (0) | 2021.07.27 |
[백준] 4562번 : No Brainer(JAVA) (0) | 2021.07.22 |
[백준] 4358번 : 생태학 (JAVA) (0) | 2021.07.12 |
[백준] 2824번 : 최대공약수(JAVA) (0) | 2021.07.12 |
댓글