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

+ Recent posts