JAVASCRIPT/코딩테스트

[프로그래머스] 0단계 - 무작위로 k개의 수 뽑기

예글 2024. 1. 11. 12:37

1. 문제 설명

 

2. 풀이

function solution(arr, k) {
    var answer = []
    
    for(let i=0;i<arr.length;i++){
        if(answer.length === k) return answer;
        if(answer.indexOf(arr[i]) === -1) answer.push(arr[i]);   
    }
    
    while(answer.length < k){
        answer.push(-1)
    }
    
    return answer.slice(0,k);
}

 

- 처음엔 for문 안에서 arr[i] !== arr[i+1]이면 answer.push(arr[i]) 이런식으로 했었는데 테스트에서는 통과했지만 제출하니까 다 실패가 떴다,, 결국 구글링 엔딩,, ㅠㅠ

 

3. 다른 사람 풀이

function solution(arr, k) {
  const set = new Set(arr);
  return set.size < k ? [...set, ...Array(k - set.size).fill(-1)] : [...set].slice(0, k);
}

 

- 오 set을 사용해서 푸니까 훨씬 간결해지네..!

- map을 자주 쓰다보니 set을 기억에서 잊어버리고 있었나보다,,