1일1알

백준 1347번 미로 만들기 C++ 본문

알고리즘

백준 1347번 미로 만들기 C++

영춘권의달인 2022. 4. 24. 12:32

출처 : https://www.acmicpc.net/problem/1347

 

100*100 맵의 중간에서 시작한다고 가정한 뒤에 찾은 길을 저장하고 출력하였다.

 

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>

using namespace std;
using ll = long long;

int dRow[4] = { -1,0,1,0 };
int dCol[4] = { 0,1,0,-1 };

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n;
	string str;
	cin >> n >> str;
	int dir = 2;
	int row, rowMax, rowMin;
	int col, colMax, colMin;
	row = rowMax = rowMin = col = colMax = colMin = 50;
	vector<vector<bool>> board(101, vector<bool>(101, false));
	board[row][col] = true;
	for (int i = 0; i < n; i++) {
		char move = str[i];
		if (move == 'F') {
			row += dRow[dir];
			col += dCol[dir];
			rowMax = max(rowMax, row);
			rowMin = min(rowMin, row);
			colMax = max(colMax, col);
			colMin = min(colMin, col);
			board[row][col] = true;
		}
		else if (move == 'L') {
			dir = (dir + 3) % 4;
		}
		else if (move == 'R') {
			dir = (dir + 1) % 4;
		}
	}
	for (int i = rowMin; i <= rowMax; i++) {
		for (int j = colMin; j <= colMax; j++) {
			if (board[i][j]) cout << '.';
			else cout << '#';
		}
		cout << "\n";
	}
};

'알고리즘' 카테고리의 다른 글

백준 1385번 벌집 C++  (0) 2022.04.26
백준 1380번 귀걸이 C++  (0) 2022.04.25
백준 1337번 올바른 배열 C++  (0) 2022.04.23
백준 1331번 나이트 투어 C++  (0) 2022.04.22
백준 1292번 쉽게 푸는 문제 C++  (0) 2022.04.21