3
2 1 3
PPOOPO
a도시에서 출발한 기차는 b도시로 도착해야하는데, 중간에 교차로가 있어 도착 순서를 조정할 수 있다.
예를 들어, a도시에 입력된 값이 2 1 3 일때
입력된 결과가 오름차순 1,2,3으로 b도시에 도착하려고 한다면
교차로에서 push와 pop의 과정을 어떤 순서로 해야 1,2,3이 나오는지 결과를 출력하는 문제이다.
/*55. 기차 운행(스택 자료구조 응용)*/
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.StringTokenizer;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
System.setIn(new FileInputStream("input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int[] s = new int[n];
st = new StringTokenizer(br.readLine());
for(int i = 0;i<n;i++){
s[i] = Integer.parseInt(st.nextToken());
}
Stack<Integer> stack = new Stack<>();
String str = "";
int j = 0;
for(int i = 0;i<n;i++){
stack.push(s[i]);
str += "P";
while(!stack.empty()){
if(j+1 == stack.peek()){
j++;
stack.pop();
str += "O";
}else{
break;
}
}
}
if(!stack.empty()) {System.out.println("impossible");
}else{
System.out.println(str);
}
}
}