메뉴 건너뛰기

문제


시간메모리제출 회통과 회비율
1초64MB
0
0
0.0%
나의 횟수나의 판정시도 명성공 명비율
00
0.0%
문제

1번부터 N번까지 번호가 부여된 N명의 사람이 일렬로 서 있다. \(i\) \((1 \le i \le N)\)번 사람은 왼쪽에서 \(i\)번째에 서 있으며, 하나의 카드 \(A_i\)를 가지고 있다. 각 카드는 가위(S), 바위(R), 보(P) 중 하나이다.

서로 다른 두 사람 사이에 다른 사람이 없다면, 그 두 사람은 서로 인접하다고 하자. 여러분은 인접한 두 사람을 골라 대결시킬 수 있다. 한 번의 대결은 다음과 같이 진행된다.

  • 두 사람의 카드가 서로 다르면, 가위바위보 규칙에 따라 승자가 결정된다. 즉, 바위(R)는 가위(S)를 이기고, 가위(S)는 보(P)를 이기고, 보(P)는 바위(R)를 이긴다.
  • 두 사람의 카드가 같으면, 여러분이 승자를 임의로 정할 수 있다.
  • 패자는 퇴장하며, 승자는 자신의 카드를 그대로 유지한 채 그 자리에 남는다. 퇴장으로 인해 새롭게 인접해지는 두 사람이 생길 수 있으며, 두 사람은 이후 대결을 할 수 있다.

여러분은 정확히 \(N-1\)번의 대결을 진행하여 단 한 명의 우승자만 남기려 한다. 각 사람에 대해, 그 사람이 우승자가 될 수 있도록 대결하는 방법이 존재하는지 판별하는 프로그램을 작성하라.

제약 조건

  • \(1 \le N \le 200\,000\)
  • \(A\)는 영어 알파벳 대문자 S, R, P로만 이루어진 길이 N의 문자열이다.

부분문제

  1. (13점) \(N \le 3\)
  2. (16점) 문자열 \(A\)는 최대 두 종류의 문자로만 이루어져 있다.
  3. (47점) \(N \le 100\)
  4. (31점) \(N \le 5\,000\)
  5. (43점) 추가 제약 조건 없음.
입력

첫 줄에 정수 \(N\)이 주어진다. 그다음 줄에 길이 \(N\)의 문자열 \(A\)가 주어진다. \(A\)의 \(i\)번째 문자 \(A_i\)는 \(i\)번 사람이 가진 카드를 나타내며, 영어 알파벳 대문자 S, R, P 중 하나이다 \((1 \le i \le N)\).

출력

첫 줄에 길이 \(N\)의 문자열을 출력한다. 이 중 \(i\)번째 문자는, \(i\)번 사람이 우승자가 될 수 있다면 1, 아니면 0이어야 한다 \((1 \le i \le N)\).

예시 1
입력
3 RPP
출력
011
설명

2번 사람과 3번 사람이 먼저 대결하면, 두 사람의 카드가 같으므로 승자를 임의로 정할 수 있다. 2번 사람을 승자로 정한 뒤 1번 사람과 대결하면, 2번 사람의 보(P)가 1번 사람의 바위(R)를 이긴다. 따라서 2번 사람이 우승자가 될 수 있다.

마찬가지로, 2번 사람과 3번 사람이 먼저 대결한 뒤 3번 사람을 승자로 정하고 1번 사람과 대결하면, 3번 사람의 보(P)가 1번 사람의 바위(R)를 이긴다. 따라서 3번 사람도 우승자가 될 수 있다.

1번 사람은 어떤 순서로 대결해도 우승자가 될 수 없다.

예시 2
입력
3 RPS
출력
101
설명

2번 사람과 3번 사람이 먼저 대결하면, 3번 사람의 가위(S)가 2번 사람의 보(P)를 이긴다. 이후 1번 사람과 3번 사람이 대결하면, 1번 사람의 바위(R)가 3번 사람의 가위(S)를 이긴다. 따라서 1번 사람이 우승자가 될 수 있다.

1번 사람과 2번 사람이 먼저 대결하면, 2번 사람의 보(P)가 1번 사람의 바위(R)를 이긴다. 이후 2번 사람과 3번 사람이 대결하면, 3번 사람의 가위(S)가 2번 사람의 보(P)를 이긴다. 따라서 3번 사람이 우승자가 될 수 있다.

2번 사람은 어떤 순서로 대결해도 우승자가 될 수 없다.

위로