알고리즘

[이코테/구현/C++] 상하좌우

데메즈 2023. 1. 5. 17:32
728x90
반응형

주의사항
  • 몇번 이동하는지 정해지지 않았기 때문에 string으로 받는다
  • n을 입력받고string을 이어서 받기 전에 버퍼를 비워준다
  • L, R, U, D를 미리 정해두고 그 인덱스에 맞춰 여행가A를 옮긴다
#include <bits/stdc++.h>

using namespace std;

int n;
string plans;
int dx[] = {-1, 1, 0, 0}; //L, R, U, D
int dy[] = {0, 0, 1, -1};
char moveTypes[4] = {'L', 'R', 'U', 'D'};

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0); //속도 가속화

    cin >> n;
    cin.ignore(); // 버퍼 비우기
    getline(cin, plans);

    int x = 1, y = 1;
    for(int i=0; i<plans.size(); i++){
        char plan = plans[i];
        // 이동 후 좌표 구하기
        int nx = -1, ny = -1;
        for(int j=0; j<4; j++){
            if(plan == moveTypes[j]){
                nx = x + dx[j];
                ny = y + dy[j];
            }
        }
        // 공간을 벗어나는 경우 무시
        if(nx<1 || ny<1 || nx>n || ny>n) continue;
        //이동 수행
        x = nx;
        y = ny;
    }
    cout << x << ' ' << y << '\n';

    return 0;
}
728x90
반응형