그럴듯한 개발 블로그
반응형

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;
}

 

중복되는 부분이 상당히 거슬리지만 코테는 빨리 푸는게 중요하니까~

그래도 너무 드러운가 싶기도 하다

반응형
profile

그럴듯한 개발 블로그

@donghyk2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!