❓❗ -> ❓ K번째 큰 수 : Brute Force / Set(), Array.from()

frenchkebab·2021년 8월 21일
0
post-thumbnail


Solution 풀이

function solution(n, k, card) {
  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]);
      }
    }
  }
  let a = Array.from(tmp).sort((a, b) => b - a);
  answer = a[k - 1];
  return answer;
}

let arr = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
console.log(solution(10, 3, arr));
  • Set() 으로 중복을 제거할 수 있다
  • Set()* 객체를 선언할 때에는 new 키워드를 써야 한다
  • Set 객체를 배열로 바꾸려면 Array.from()을 사용하면 된다
  • Set 객체 추가push 대신 add를 사용하면 된다

내 풀이

function solution(n, k, card) {
  let list = [];
  for (let i = 0; i < n - 2; i++) {
    for (let j = i + 1; j < n - 1; j++) {
      for (let k = j + 1; k < n; j++) {
        let sum = card[i] + card[j] + card[k];
        list.push(sum);
      }
    }
  }
  list = list.sort((a, b) => b - a);
  list.push(' ');

  let cnt = 1;
  for (i = 0; i < n - 1; i++) {
    if (list[i] !== list[i + 1]) cnt++;

    if (cnt === k) {
      answer = list[i];
      break;
    }
  }

  return answer;
}

let arr = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
console.log(solution(10, 3, arr));
</script>

로직 자체는 맞는 것 같은데 왜 에러가 나는지 모르겠음...

계속 이런 에러가 뜬다 ... ㅠㅠ

profile
Blockchain Dev Journey

0개의 댓글