반응형
https://school.programmers.co.kr/learn/courses/30/lessons/172928
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(vector<string> park, vector<string> routes) {
vector<int> answer;
int x_len = park.size(), y_len = park[0].size();
int x = 0, y = 0;
// x 가 세로, y 가 가로 //좌표 예시: park[x][y]
for (int i = 0; i < x_len; i++) // s 찾기
{
for (int j = 0; j < y_len; j++)
{
if (park[i][j] == 'S')
{
x = i;
y = j;
}
}
}
for (int i = 0; i < routes.size(); i++)
{
// cout << "x: " << x << "y: " << y << '\n';
if (routes[i][0] == 'E')
{
int move = routes[i][2] - '0';
for (int j = 1; j <= move; j++)
{
if (y + j < y_len && park[x][y + j] != 'X')
{
if (j == move)
y += move;
}
else
break ;
}
}
else if (routes[i][0] == 'W')
{
int move = routes[i][2] - '0';
for (int j = 1; j <= move; j++)
{
if (y - j >= 0 && park[x][y - j] != 'X')
{
if (j == move)
y -= move;
}
else
break ;
}
}
else if (routes[i][0] == 'S')
{
int move = routes[i][2] - '0';
for (int j = 1; j <= move; j++)
{
if (x + j < x_len && park[x + j][y] != 'X')
{
if (j == move)
x += move;
}
else
break ;
}
}
else
{
int move = routes[i][2] - '0';
for (int j = 1; j <= move; j++)
{
if (x - j >= 0 && park[x - j][y] != 'X')
{
if (j == move)
x -= move;
}
else
break ;
}
}
}
// cout << "x: " << x << "y: " << y << '\n';
answer.push_back(x);
answer.push_back(y);
return answer;
}
중복되는 부분이 상당히 거슬리지만 코테는 빨리 푸는게 중요하니까~
그래도 너무 드러운가 싶기도 하다
반응형
'<algorithm> > 프로그래머스' 카테고리의 다른 글
프로그래머스 신고 결과 받기 c++ (0) | 2023.05.24 |
---|---|
프로그래머스 대충 만든 자판 c++ (2) | 2023.05.22 |
프로그래머스 덧칠하기 c++ (0) | 2023.05.22 |
프로그래머스 추억 점수 c++ (3) | 2023.05.21 |
달리기 경주 c++ (0) | 2023.04.28 |