코딩공부/프로그래머스

※[프로그래머스]Lv.1 공원 산책 C#

usingsystem 2023. 6. 9. 10:31
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/172928

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

소스코드

using System;

public class Solution
{
    int maxX = 0;
    int maxY = 0;

    public int[] solution(string[] park, string[] routes)
    {
        maxX = park[0].Length;
        maxY = park.Length;

        int[] answer = new int[2];

        int x = 0;
        int y = 0;

        for (int i = 0; i < park.Length; i++)
        {
            int index = park[i].IndexOf("S");
            if (index != -1)
            {
                x = index;
                y = i;
                break;
            }
        }

        foreach (string route in routes)
        {
            string[] routeInfo = route.Split(" ");

            string dir = routeInfo[0];
            int movePos = int.Parse(routeInfo[1]);

            int nextY = y;
            int nextX = x;
            bool isCheck = true;

            for (int i = 0; i < movePos; i++)
            {
                switch (dir)
                {
                    case "N":
                        nextY--;
                        break;
                    case "S":
                        nextY++;
                        break;
                    case "W":
                        nextX--;
                        break;
                    case "E":
                        nextX++;
                        break;
                }

                if (IsOderCheck(park, nextY, nextX) == false)
                {
                    isCheck = false;
                    break;
                }
            }
            if (isCheck)
            {
                x = nextX;
                y = nextY;
            }
        }
        return new int[2] { y, x };
    }

    bool IsOderCheck(string[] park, int y, int x)
    {
        if (y < 0 || y >= maxY)
            return false;
        if (x < 0 || x >= maxX)
            return false;
        if (park[y][x] == 'X')
            return false;

        return true;
    }
}
728x90