https://www.acmicpc.net/problem/2605
학생들은 번호를 뽑고 자기가 선 위치에서 뽑은 번호 숫자만큼 앞으로 새치기?할 수 있다.
뽑은 숫자 n번 만큼 버블정렬하여 풀 수 있다고 생각했지만, 2개의 스택을 사용해서 풀어보았다.
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
Stack left = new Stack();
Stack right = new Stack();
for (int i = 1; i <= N; i++) {
int num = sc.nextInt();
for (int j = 0; j < num; j++) {
right.push(left.pop());
}
left.push(i);
while (!right.isEmpty()) {
left.push(right.pop());
}
}
while (!left.isEmpty()) {
right.push(left.pop());
}
StringBuilder sb = new StringBuilder();
while (!right.isEmpty()) {
sb.append(right.pop() + " ");
}
System.out.println(sb.toString());
sc.close();
}
}
'알고리즘 ' 카테고리의 다른 글
SCC - kosaraju (0) | 2019.05.21 |
---|---|
Union-Find (유니온 파인드) (0) | 2019.05.17 |
Parametric search (파라메트릭 서치) (0) | 2019.05.16 |
[JAVA] KMP 알고리즘(문자열 검색) (0) | 2019.05.13 |
백준 1253 : 좋다 (0) | 2019.04.19 |