한 걸음씩 기록하며

[프로그래머스 코딩테스트] 두개 뽑아서 더하기 본문

알고리즘 & 코딩테스트

[프로그래머스 코딩테스트] 두개 뽑아서 더하기

Haksae 2022. 1. 19. 12:48

[자연수 뒤집어 배열로 만들기]

문제 설명 :
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.

 

⛏제한 조건

  • numbers의 길이는 2 이상 100 이하입니다.
    • numbers의 모든 수는 0 이상 100 이하입니다.

 

📁 입출력 예시

👉🏻  답안

function solution(numbers) {
    let answer = [];
    for (let i = 0; i < numbers.length; i++) {
      for (let j = i+1; j < numbers.length; j++) {
        if (!answer.includes(numbers[i]+numbers[j])) {
          answer.push(numbers[i]+numbers[j])
        }
      }
    }
  return answer.sort((a,b) => a - b);
}

📑  간단한 설명

이중포문을 돌리고 if로 중복되는 값이 없을 때만 추가하는 것으로 만들었다.

그리고 리턴할 때 오름차순 배열로 바꾼다.

j = i+1로 한 이유는 중복되는 덧셈을 제외하기 위해서이다.

 

💪🏻 공부하면 좋을 답안

function solution(numbers) {
    const temp = []

    for (let i = 0; i < numbers.length; i++) {
        for (let j = i + 1; j < numbers.length; j++) {
            temp.push(numbers[i] + numbers[j])
        }
    }

    const answer = [...new Set(temp)]

    return answer.sort((a, b) => a - b)
}
  • [...new Set(temp)] : spread operation 이랑 set을 통해서 중복되는 값을 제거해줬다. 많이 활용될 것 같다.

 

  • 참고

https://hianna.tistory.com/422

https://velog.io/@vvee1253/JavaScript-Set

 

Comments