[프로그래머스] 두 개 뽑아서 더하기 (자바스크립트/javascropt)

스카치·2023년 2월 23일
0

문제

풀이 1

이중 for문을 통한 풀이

function solution(numbers) {
    var answer = [];
    for (let i=0; i<numbers.length; i++ ){
        for (let j=i+1; j <numbers.length; j++) {
            let x = numbers[i]+numbers[j]
            if (answer.indexOf(x) === -1 ) answer.push(x) 
        }
    }

    return answer.sort((a,b) => a-b);
}

풀이 2

조합을 구하는 함수를 이용한 풀이. 배열의 길이나 뽑는 숫자가 바뀌어도 적용할 수 있다.

function solution (numbers) {
  let answer = []
  let getNum = 2
  function getCombi(numbers, getNum) {
      if (getNum===1) return numbers.map(v => [v])
      numbers.forEach( (fixed, index, origin) => {
          const rest = origin.slice(index+1)
          const combis = getCombi(rest, getNum-1)
          const attach = combis.map(combi => fixed+parseInt(combi))
          
          answer.push(...attach)
      })
  }
  getCombi(numbers,getNum)
  return answer = [...new Set(answer)].sort((a,b)=>a-b)
  
}

0개의 댓글