티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/49994

 

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

 

programmers.co.kr

배열을 사용해 방문 좌표를 확인할 수 있도록 범위를 (0,0)~ (10,10)으로 조정하였습니다.

이 문제에서 '길'은  (x, y) -> (u, v) 사이입니다. 처음 문제에  접근할 때 '걸어본 길'을 '방문한 칸'으로 해석해 해멨습니다.ㅠㅠ

때문에 (x,y)에서 (u,v)로 왔다면, 역방향도 같은 길이기 때문에 visit[x][y][u][v] , visit[u][v][x][y] 을 모두 true로 표시해야합니다.


C++ 소스 코드

#include <string>
using namespace std;
bool visit[11][11][11][11];
int solution(string dirs) {
    int answer = 0;
    int nowi=5, nowj=5;
    for(int i=0;i<dirs.size();i++){
        int nexti=nowi,nextj=nowj;
        if (dirs[i]=='U'){
            nexti--;
        }else if (dirs[i]=='D'){
            nexti++;
        }else if (dirs[i]=='R'){
            nextj++;
        }else {
            nextj--;
        }
        if(nexti < 0 || nexti > 10 ||nextj < 0 || nextj > 10) continue;
        if (!visit[nowi][nowj][nexti][nextj]){
            visit[nowi][nowj][nexti][nextj]=true;
            visit[nexti][nextj][nowi][nowj]=true;
            answer++;
        }
        nowi = nexti;
        nowj = nextj;
    }
    return answer;
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
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 31
글 보관함