-
[프로그래머스/Level 1] 공원 산책알고리즘 문제풀이/프로그래머스 2024. 1. 2. 22:49
https://school.programmers.co.kr/learn/courses/30/lessons/172928
주어진 크기 만큼 특정 방향을 이동할 때, 크기가 벗어나면 여태까지 이동했던 좌표 정보는 업데이트 되면 안되고 초기화 되어야 한다. 따라서 flag 처리를 통해 이를 구분하였다.
#include <string> #include <vector> #include <map> #include <algorithm> #include <iostream> using namespace std; // N: 0, S: 1, W: 2, E: 3 int dx[4] = {-1, 1, 0, 0}; int dy[4] = {0, 0, -1, 1}; vector<int> solution(vector<string> park, vector<string> routes) { map<char, int> m = { {'N', 0}, {'S', 1}, {'W', 2}, {'E', 3} }; int sx, sy; for (int i = 0; i < park.size(); i++) { for (int j = 0; j < park[i].size(); j++) { if (park[i][j] == 'S') { sx = i, sy = j; break; } } } int h = park.size(); int w = park[0].size(); for (int i = 0; i < routes.size(); i++) { char d = routes[i][0]; int mv = routes[i][2] - '0'; int x = sx, y = sy; bool flag = true; for (int j = 0; j < mv; j++) { int nx = x + dx[m[d]]; int ny = y + dy[m[d]]; if (nx < 0 || ny < 0 || nx >= h || ny >= w || park[nx][ny] == 'X') { flag = false; break; } x = nx, y = ny; } if (flag) sx = x, sy = y; } return {sx, sy}; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 1] 대충 만든 자판 (1) 2024.01.04 [프로그래머스/Level 1] 바탕화면 정리 (0) 2024.01.02 [프로그래머스/Level 1] 달리기 경주 (0) 2023.12.27 [프로그래머스/Level 1] 개인정보 수집 유효기간 (0) 2023.04.10 [프로그래머스/Level 2] k진수에서 소수 개수 구하기 (0) 2022.10.10