반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/172928
문제
풀이 및 코드
문제가 요구를 하는 방식에 대해서는 간단합니다.
결국 간단한 string으로 들어온 벡터의 문자열을 처리하는 것에 대해서 처리를 진행해줍니다.
1.맵의 y크기,x크기와 더불어 시작 좌표를 구하였습니다.
2.움직일 수 있다면 움직이고 움직일 수 없다면 이동을 하지 않는 방식을 진행하였습니다.
조건 1) 움직이려 할때 맵의 범위를 벗어나는지 체크
조건 2) 맵의 범위를 벗어나지 않는다면 'X'가 있는지에 대한 체크
물론 움직이는 방향 E,W,S,N에 대해서 따로 MAP으로 설정을 하거나 함수를 설정하면 편할테지만 조금은 귀찮은 관계로..
푼 관계가 없지않아 있습니다.
레벨 1에서 너무 많은 피로도를 쏟고 싶지는 않고 효율적인 측면에서도 뒤쳐지지 않는다고 판단하여 따로 함수를 쪼개지는 않았습니다.
/*
공원 산책 -> 지나다니는 길 o 장애물 x
"방향 거리" , "방향 거리" -> 이런식
결국 명령을 했을때 갈 수 있는지에 대한 체크를 하면 된다.
못가면 패스 갈 수 있다면 통과
*/
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int boundaryCheck(vector<string>park,int direction, int move); //park, 방향, 이동횟수
vector<int> solution(vector<string> park, vector<string> routes) {
vector<int> answer;
int y =0, x= 0; //시작 좌표설정
int mapY = park.size(); //맵 y크기
int mapX = park[0].size(); //맵 x크기
for(int i = 0; i < mapY;i++){
for(int j = 0; j < mapX;j++){
if(park[i][j] == 'S'){
y=i;
x=j;
}
}
}
for(int i = 0; i < routes.size();i++){
int step = (routes[i][2] - '0'); // step의 크기
int cantMove = 0; // 움직이지 못하면 1 가능 -> 0
if(routes[i][0] == 'E'){
if(x + step < mapX){
for(int j = x;j <= x + step;j++){
if(park[y][j]=='X')
cantMove = 1;
}
if(cantMove == 0)
x += step;
}
}else if (routes[i][0] == 'W'){
if(0 <=x - step){
for(int j = x;j >= x - step;j--){
if(park[y][j]=='X')
cantMove = 1;
}
if(cantMove == 0)
x -= step;
}
}else if (routes[i][0] == 'S'){
if(y + step < mapY){
for(int j = y;j <= y + step;j++){
if(park[j][x]=='X')
cantMove = 1;
}
if(cantMove == 0)
y += step;
}
}else if (routes[i][0] == 'N'){
if(0 <= y - step){
for(int j = y;y-step <= j;j--){
if(park[j][x]=='X')
cantMove = 1;
}
if(cantMove == 0)
y -= step;
}
}
}
answer.push_back(y);
answer.push_back(x);
return answer;
}
반응형
'알고리즘 > c++ 프로그래머스' 카테고리의 다른 글
[프로그래머스 신규 아이디 추천] c++ (풀이,코드) (0) | 2023.06.22 |
---|---|
[프로그래머스 달리기 경주] c++ (풀이, 코드) (0) | 2023.06.21 |
[프로그래머스 x만큼 간격이 있는 n개의 숫자] c++ (풀이,코드) (0) | 2023.06.19 |
[프로그래머스 소수 찾기] c++ (풀이,코드) (0) | 2023.06.13 |
[프로그래머스 가장 큰수] c++ (풀이,코드) (0) | 2023.06.10 |
댓글