Bleeding edge

[프로그래머스] - 방문 길이 본문

코딩테스트 공부

[프로그래머스] - 방문 길이

codevil 2022. 4. 13. 15:35

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

 

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

 

programmers.co.kr

 

한.. 2~3주만 다시 풀고 푼 문제

function solution(dirs) {
    let now = [0,0]
    let road = new Set();
    for(let i = 0; i<dirs.length;i++){
        
        let temp = String(now[0])+String( now[1])
        now = move(now, dirs[i])
        let temp2 = String(now[0])+String( now[1])
        if( temp!==temp2){
       
              road.add(temp + temp2)
                road.add(temp2 + temp)
            
        }
 
    }
    return road.size/2
}
function move(now, str){
    if(str==='U'){
        if(now[1]<5){
        now = [now[0], now[1] +1]}
    }
     if(str==='D'){
                 if(now[1]>-5){
        now = [now[0], now[1] -1]}
    }
        if(str==='L'){
                    if(now[0]>-5){
        now = [now[0]-1, now[1]]}
    }
        if(str==='R'){
                    if(now[0]<5){
        now = [now[0]+1, now[1]]}
    }
    return now
}

전에 포기했었던 이유가, array안의 array [ [], [] ] 와 같은 구조에서, includes가 작동안하는 것을 해결을 못했었는데, 이를, string화 시켜서 해결했다. 그리고 a -> b , b -> a와 같이 왔다 갔다하는 것 같은 경우에는, 두개다 넣고 반을 나누는 것으로 해결했다.