티스토리 뷰

문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/49994

 

코딩테스트 연습 - 방문 길이

 

programmers.co.kr

 

 

 

구현문제

 

 

 

 

#include <string>
#include <vector>
#define boardSize 11
#define start 5

using namespace std;

vector<vector<vector<bool>>> visited;

int solution(string dirs) {
    int answer = 0;
    
    visited.assign(boardSize, vector<vector<bool>>(boardSize, vector<bool>(4, false)));
    
    int y = start;
    int x = start;
    for(int i = 0; i < dirs.size(); i++) {
        switch(dirs[i]) {
            case 'U':
                if(y == 0) continue;
                if(!visited[y - 1][x][1]) {
                    visited[y][x][0] = true;
                }
                y--;
                break;
            case 'D':
                if(y == boardSize - 1) continue;
                if(!visited[y + 1][x][0]) {
                    visited[y][x][1] = true;
                }
                y++;
                break;
            case 'L':
                if(x == 0) continue;
                if(!visited[y][x - 1][3]) {
                    visited[y][x][2] = true;
                }
                x--;
                break;
            case 'R':
                if(x == boardSize - 1) continue;
                if(!visited[y][x + 1][2]) {
                    visited[y][x][3] = true;
                }
                x++;
                break;
        }
    }
    
    for(int i = 0; i < boardSize; i++) {
        for(int j = 0; j < boardSize; j++) {
            for(int k = 0; k < 4; k++) {
                if(visited[i][j][k]) answer++;
            }
        }
    }
    
    return answer;
}

 

 

 

개발 환경 : vscode

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함