[Refresh ! 코딩 테스트 / js] -보석 쇼핑

정대만·2025년 2월 8일

문제 해석

  • 중복이 되도 상관없음
  • 하지만 가장 짧은 route 을 찾아야됨

처음에 내생각

  • 예전에 풀던 문제에서
  • two point 으로 문제를 푸는건가? 생각을 했다.
  • 하지만 이 count 하는데 있어 시간 문제가 꼭 발생할것이고. 이걸 효울적으로 어떻게 해결하는게 좋은가??? 생각을 하다가 답지를 봤다.

이 문제에서 얻은거

  1. map () 메서드
  • map 메서드 에 값을 넣을려면 set() , 값을 빼줘! get() , values() 형태 . iteration 형태로 만들고. next() 을 하면 처음에 넣은것이 나옴 . 그다음 value 을 하면 처음 set 형태로 넣은 value 값이 나온다.
  • set, get 모두 length 을 얻기 위해서는 size () 을 할것
  • delete (key 값) 을 하면 된다는것

나의 코드 & 남의 코드

function solution(gems) {
  //길이를 구하는 문제. 내가 생각한 방법이 틀렸다. 
 const gems_length= new Set( gems).size;
 let map_gems= new Map();
 let answer=[1,gems.length];
    // default 길이 .. 나중에 비교할거리 
    gems.forEach((el,index)=>{
        map_gems.delete(el);
        // 거리를 지우는거 
        map_gems.set(el,index+1);
        //추가하는거 
        if(map_gems.size==gems_length){
            // 업데이트 
            const distance= [map_gems.values().next().value,index+1];
            if(answer[1]-answer[0] > distance[1]-distance[0]){
                //일때는
                answer=distance;
            } 
        }
        
        
    })
    return answer;
    
    
}

profile
안녕하세요

0개의 댓글