이코테 상하좌우 예제

0

C++ 코딩테스트

목록 보기
28/30

문제



풀이

#include<bits/stdc++.h>
using namespace std;
char plan[4] = {'L','R','U','D'}; // 이동하는 경우의 수
int x = 1, y = 1;
int n, nx, ny;
int dx[4] = {0,0,-1,1}; // L, R, U, D에 대한 x좌표의 변화값
int dy[4] = {-1,1,0,0}; // L, R, U, D에 대한 y좌표의 변화값
int main(){
	cin >> n;
	cin.ignore(); // cin으로 입력 받으면 엔터가 버퍼에 남는다. 따라서 다음 입력을 받기 위해 버퍼를 비워준다.
	string command;
	getline(cin, command); // 문자열 전체를 입력값으로 받는다.
	for(int i = 0; i < command.size(); i++){
		for(int j = 0; j < 4; j++){
			if(command[i] == plan[j]){ // 문자열을 처음부터 차례대로 LRUD와 비교하며, 좌표를 이동시킨다.
				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;
	return 0;
}

0개의 댓글