Make Unreal REAL.
article thumbnail
Level 2. 무인도 여행

 

 

전형적인 DFS 문제이다.

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <cctype>

using namespace std;

int rDFS(vector<string>& maps, int r, int c)
{
    size_t H = maps.size(), W = maps.front().length();

    if (r < 0 || c < 0 || H <= r || W <= c || maps[r][c] == 'X')
        return 0;

    char days = maps[r][c];
    maps[r][c] = 'X';

    return  days - '0'
            + rDFS(maps, r - 1, c)
            + rDFS(maps, r, c - 1)
            + rDFS(maps, r + 1, c)
            + rDFS(maps, r, c + 1);
}

vector<int> solution(vector<string> maps)
{
    vector<int> answer;
    size_t H = maps.size(), W = maps.front().length();

    for (int r = 0; r < H; ++r)
        for (int c = 0; c < W; ++c)
            if (isdigit(maps[r][c]))
                answer.emplace_back(rDFS(maps, r, c));

    sort(answer.begin(), answer.end());

    return answer.empty() ? vector<int>{-1} : answer;
}

'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글

Level 0. qr code  (0) 2023.04.25
Level 2. n^2 배열 자르기  (0) 2023.04.24
Level 2. 피보나치 수  (0) 2023.04.22
Level 2. [1차] 캐시  (0) 2023.04.21
Level 2. 예상 대진표  (0) 2023.04.20
profile

Make Unreal REAL.

@diesuki4

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

검색 태그