Codeforces Round #742 (Div. 2)-A. Domino Disaster

falconlee236

·

2021. 11. 16. 20:25

반응형

문제 설명

엘리스는 $2 \times n$ 크기 타일을 가지고 있다. 엘리스는 타일을 $1 \times 2$ 크기 도미노로 완전히 덮고 싶다. 엘리스는 도미노를 수직, 수평으로 놓을 수 있고 도미노끼리 겹치면 안된다.

엘리스는 지금 밥에게 타일의 한 행을 보여준다. 우리는 엘리스가 보여준 타일의 한 행을 가지고 다른 행이 어떻게 구성됐는지 알아내야 한다.

Input
첫번째 줄에는 테스트 케이스의 개수 $t$가 주어진다. $(1 \le t \le 5000)$

각 테스트케이스의 첫번째 줄에는 타일의 가로 길이 $n$이 주어진다. $(1 \le n \le 100)$

각 테스트케이스의 두번째 줄에는 'L', 'R', 'U', 'D' 로만 이루어져 있는 $n$개의 문자로 구성된 문자열 's'가 주어진다. 'L'은 left, 'R'은 right, 'U'는 up, 'D'는 down이라는 뜻이다. 이 문자열은 타일의 한 행을 의미한다.

각 테스트케이스는 반드시 답이 존재한 경우만 주어진다.

Output
각 테스트 케이스마다 타일의 다른 한 행을 출력한다. 만약 답이 여러개 있다면 아무거나 출력해도 좋다.

Example
input
4
1
U
2
LR
5
LRDLR
6
UUUUUU

output
D
LR
LRULR
DDDDDD

문제 접근

사용한 알고리즘: 구현
걸린 시간 : 00:06
이 문제는 문제 설명을 보고 이해하는것이 아니라 문제 맨 아래에 있는 Note를 보면 바로 이해할 수 있다.
한 타일이 'U' 이면 다른 타일은 'D'를, 한 타일이 'D' 이면 다른 타일은 'U'를 출력한다. 그리고 한 타일이 'L' 혹은 'R'이면 다른 타일 또한 각각'L'과 'R'을 출력하면 된다.

정답 코드

#include <iostream>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    int t; cin >> t;
    while(t--){
        int n; cin >> n;
        char arr[n];
        for(int i = 0; i < n; i++){
            char c; cin >> c;
            if(c == 'U') arr[i] = 'D';
            else if(c == 'D') arr[i] = 'U';
            else arr[i] = c;
        }
        for(int i = 0; i < n; i++) cout << arr[i];
        cout << "\n";
    }
    return 0;
}
반응형