관리 메뉴

너와 나의 스토리

[BOJ] 13567 로봇 본문

Algorithm/구현

[BOJ] 13567 로봇

노는게제일좋아! 2019. 10. 4. 20:57
반응형

문제: https://www.acmicpc.net/problem/13567

 

문제 풀이:

int dx[4] = { 1,0,-1,0 };
int dy[4] = { 0,1,0,-1 };

0: 상 1: 우 2: 하 3: 좌 

로 설정해 놓고

 

좌표를 가리키는 변수 하나, (x,y) 값을 표시하는 변수 하나 만들고 기록하면서 움직이면 됨

 

 

소스 코드:

#include <iostream>
#include <vector>
#include <string.h>
#include <string>
#include <queue>
#include <string>
using namespace std;

typedef pair<int, int> P;
int n, m;
int dx[4] = { 1,0,-1,0 };
int dy[4] = { 0,1,0,-1 };
int dir;
P pos; 
bool move(int dist) {
	pos.first += dx[dir] * dist;
	pos.second += dy[dir] * dist;
	if (pos.first<0 || pos.first>n || pos.second<0 || pos.second>n) return false;

	return true;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> n >> m;
	dir = 1;
	
	for (int i = 0; i < m; i++) {
		string s;
		int t;
		cin >> s>>t;
		if (s == "MOVE") {
			if (!move(t)) {
				cout << "-1\n";
				return 0;
			}
		}
		else if (s == "TURN") {
			if (t == 0) dir = (dir - 1 + 4) % 4;
			else dir = (dir + 1) % 4;
		}
	}
	cout << pos.second << " " << pos.first<< '\n';
	return 0;
}
반응형
Comments