| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 1024 MB | 537 | 98 | 89 | 21.867% |
키위 유치원에서 $N$마리의 어린 키위새들은 재밌는 게임 "가지 오이 당근"을 하고 있습니다. "가지 오이 당근"은 가위바위보와 비슷한 게임으로, 다음과 같은 규칙을 가집니다.
가지는 오이를 상대로, 오이는 당근을 상대로, 당근은 가지를 상대로 승점을 얻습니다.
유치원의 키위새들은 채소를 내었지만, 여러분은 잠시 쉬고 있느라 몇몇 키위새가 낸 채소를 보지 못했습니다! 그 대신 유치원의 키위새들에게 게임의 결과를 물어보아 각 키위새가 이겼는지, 비겼는지, 졌는지 알아내었습니다. 하지만 키위새는 기억력이 좋지 않아 실제 결과와 다른 결과를 말했을 수도 있습니다.
키위새들이 말한 결과가 가능한 결과인지 판별하고 가능하다면 각 키위새가 낸 채소들의 조합으로 가능한 것을 아무거나 찾아서 출력해 봅시다.
첫 번째 줄에 테스트 케이스의 수 $T$가 주어집니다. $(1 \le T \le 10^5)$
각 테스트 케이스의 첫 번째 줄에 "가지 오이 당근"을 한 키위새의 수 $N$이 주어집니다. $(2 \le N \le 10^5)$
그다음 줄에 G, O, D, ? 만으로 이루어진 길이 $N$의 문자열 $V$가 주어집니다. 이 문자열의 $i$번째 글자 $V_i$는 다음과 같은 정보를 나타냅니다.
G: $i$번째 키위새가 채소 가지를 내었습니다.O: $i$번째 키위새가 채소 오이를 내었습니다.D: $i$번째 키위새가 채소 당근을 내었습니다.?: $i$번째 키위새가 낸 채소를 보지 못했습니다.$V$에 ?가 한 개 이상은 존재합니다.
그다음 줄에 W, D, L 만으로 이루어진 길이 $N$의 문자열 $R$이 주어집니다. 이 문자열의 $i$번째 글자 $R_i$는 다음과 같은 정보를 나타냅니다.
W: $i$번째 키위새가 본인이 이겼다고 말했습니다.D: $i$번째 키위새가 본인이 비겼다고 말했습니다.L: $i$번째 키위새가 본인이 졌다고 말했습니다.모든 테스트 케이스에서 $N$의 총합이 $2 \times 10^5$를 넘지 않습니다.
각 테스트 케이스에 대해 다음 내용을 출력합니다.
만약 키위새들이 채소를 낼 수 있는 조합이 존재한다면 YES를 한 줄에 출력하고, 그다음 줄에 길이 $N$의 문자열 $V'$을 출력합니다. 이때, $V'$은 G, O, D 만으로 이루어진 문자열이어야 하고, $V'$에 따라 키위새들이 "가지 오이 당근"을 진행했을 때 결과가 $R$에서 주어진 결과와 일치해야 합니다. 또한, $V$의 $i$번째 글자 $V_i$가 ?가 아니라면 $V'_i$와 $V_i$는 일치해야 합니다.
키위새들이 채소를 낼 수 있는 조합이 존재하지 않는다면 NO를 한 줄에 출력합니다.
8 10 GD?DD??D?G LWLWWWLWLL 10 GOG?GO???O DDDDDDDDDD 10 GOGGGOGO?O DDDDDDDDDD 10 G??????G?? DDDDDDDDDD 10 ?GG?GD??GD WWLWWLLLLW 10 D?GDOGD?DO WLLDWLWWLL 7 G?G?GG? WWWLWWL 7 ??????D WLLLLLL
YES GDGDDDGDGG YES GOGDGODDDO YES GOGGGOGODO YES GGGGGGGGGG NO NO YES GGGOGGO YES ODDDDDD