Make Unreal REAL.
article thumbnail
Level 2. 방문 길이

 

 

bool 타입의 visited[fromX][fromY][toX][toY] 4차원 배열에 방문 여부를 저장하여 해결했다.

 

예를 들어, 한 번 표시할 때는 (3,4) -> (4, 4)와 (4, 4) -> (3, 4)를 함께 표시해야 한다.

 

인덱스는 매크로 함수를 만들어 -5 ~ 5를 0 ~ 10으로 매핑했다.

 

#include <iostream>
#include <utility>

#define I(x) ((x) + 5)

using namespace std;

int solution(string dirs)
{
    int answer = 0;
    bool visited[11][11][11][11] = {false};
    pair<int, int> current = {I(0), I(0)};

    for (char c : dirs)
    {
        pair<int, int> t = current;

        switch (c)
        {
        case 'U':
            if (current.second < I(5))
                current.second += 1;
            break;
        case 'D':
            if (I(-5) < current.second)
                current.second -= 1;
            break;
        case 'R':
            if (current.first < I(5))
                current.first += 1;
            break;
        case 'L':
            if (I(-5) < current.first)
                current.first -= 1;
            break;
        }

        if (t != current && visited[t.first][t.second][current.first][current.second] == false)
        {
            visited[t.first][t.second][current.first][current.second] =
            visited[current.first][current.second][t.first][t.second] = true;

            ++answer;
        }
    }

    return answer;
}
profile

Make Unreal REAL.

@diesuki4

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

검색 태그