K번째 큰 수

minho·2022년 2월 21일
0

문제

나의 코드

let arr=[13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
let k = 3;
-------------------------------------------------
  
let n = arr.length;
let stack = [];
let answer;
for(let i=0; i<n; i++){
    for(let j=i+1; j<n; j++){
        for(let l=j+1; l<n; l++){
            let tmp = arr[i]+arr[j]+arr[l];            
            stack.push(tmp)
        }
    }
}

stack.sort((a,b)=> b-a);
let stack2 = Array.from(new Set(stack));
answer = stack2[k-1];
console.log(answer);

원리

  • tmp에 뽑은 3장의 카드를 만든다.
  • stack[]에 넣어준다.
  • stack을 정렬시킨다.(내림차순으로)
  • stack을 Set으로 바꾼다음 다시 배열로 바꾼다. -> 중복을 제거하기 위함

수정코드

let arr=[13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
let k = 3;
-------------------------------------------------
  
let n = arr.length;
let answer;
let tmp = new Set();
for(let i=0; i<n; i++){
    for(let j=i+1; j<n; j++){
        for(let k=j+1; k<n; k++){
            tmp.add(card[i]+card[j]+card[k]); // Set에 넣어줄때는 add를 쓴다.
        }
    }
}
let a=Array.from(tmp).sort((a, b)=>b-a); //set은 sort를 쓸 수 없으므로 배열로 만들어준뒤에 정렬한다.
answer=a[k-1];
console.log(answer);

수정부분

  • Set을 만들어 바로 중복을 제거해준다.
profile
Live the way you think

0개의 댓글