https://www.acmicpc.net/problem/2605
2605번: 줄 세우기
점심시간이 되면 반 학생 모두가 한 줄로 줄을 서서 급식을 탄다. 그런데 매일 같이 앞자리에 앉은 학생들이 앞에 줄을 서 먼저 점심을 먹고, 뒷자리에 앉은 학생들은 뒤에 줄을 서 늦게 점심을 먹게 된다. 어떻게 하면 이러한 상황을 바꾸어 볼 수 있을까 고민하던 중 선생님이 한 가지 방법을 내 놓았다. 그 방법은 다음과 같다. 학생들이 한 줄로 줄을 선 후, 첫 번째 학생부터 차례로 번호를 뽑는다. 첫 번째로 줄을 선 학생은 무조건 0번 번호를 받아 제일
www.acmicpc.net
학생들은 번호를 뽑고 자기가 선 위치에서 뽑은 번호 숫자만큼 앞으로 새치기?할 수 있다.
뽑은 숫자 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 |