프로그래밍/HTML, CSS, JavaScript

프로그래머스 Level1 두수의 합 구하기(JavaScript)

싯타마 2021. 3. 24. 21:41

1. 문제

 

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

출처: programmers.co.kr/learn/courses/30/lessons/68644?language=javascript

 

코딩테스트 연습 - 두 개 뽑아서 더하기

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

programmers.co.kr

 

2. 코드

 

function solution(numbers) {
    
    const temp =[]; // 배열 선언
    
    // 배열내의 서로 두 수의 합
    for ( let i=0; i < numbers.length-1; i++) {
        for (let j = i+1; j < numbers.length; j++) {
        
       		// 두 수의 합을 temp배열에 추가	
            temp.push(numbers[i] + numbers[j])
        }
    }
    const answer = [...new Set(temp)] // 배열 내의 중복값 삭제
    return answer.sort((a, b) => a - b) // 배열을 오름차순 정렬
}

 

3. 배운 것

 

  1) for 문을 중첩하여 사용

   for 문을 중첩하여 사용하여 두 수의 합을 구하였다.

 

  2) 배열 값 추가

  .push() 를 사용하여 배열의 값을 추가 

배열.push(추가할 값)

 

  3) 배열 중복값 제거

  2가지 방법을 배웠다.

 

    (1) set 사용하기

    Set 객체를 사용하면 중복 없는 데이터를 표현할 수 있다.

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

 

    (2) filter 와 indexOf 사용하기

 

    - indexOf는 가장 처음으로 나타는 index를 return 하고

    검사하고 있는 원소의 index와 조건에 따라 값을 (true or false) 리턴합니다. 해당 코드에서 조건은 item      의 index와  검사하고 있는 index값이 같을 경우에 true.

 

    - filter는 조건에 맞는 true 값을 출력하여 배열로 만들어준다.

  const answer = temp.filter((item, index) => 
         temp.indexOf(item) === index)

 

 

  4) 배열 오름차순 정리

  .sort((a, b) => a - b)는 배열을 오름차순으로 나열해준다.

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