4일차 → 두 개 뽑아서 더하기(includes(), indexOf(), sort())
본문 바로가기
항해 중/2주차 알고리즘(프로그래머스)

4일차 → 두 개 뽑아서 더하기(includes(), indexOf(), sort())

by 은돌1113 2021. 11. 11.

문제설명

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

 

제한사항

- numbers의 길이는 2 이상 100 이하입니다.

- numbers의 모든 수는 0 이상 100 이하입니다.

 

내가 푼 문제 풀이

이번 문제는 어떻게 진행이 되는 지 먼저 구상을 해보고 코드를 짰다.

function solution(numbers) {
    
    var answer = [];

    for(let i = 0; i<numbers.length; i++){
    // 예를 들어서 구구단에서 단 역할을 하는 곳
      for(let j = i+1; j<numbers.length; j++){
      // 예를 들어서 구구단에서 1~9까지 수
      // i+1을 한 이유는 서로 다른 인덱스에 있는 두개의 수를 뽑아야 하기 때문에 i의 다음 값을 뽑기 위해서 사용
      // <=을 사용하지 않은 이유는 배열에 index는 0부터 시작하기 때문에
      // <=를 하면 마지막 연산을 할 때 NaN이 나온다.
        if(!answer.includes(numbers[i] + numbers[j])){
        // includes()를 사용해서 연산한 값이 answer 배열에 있는 지 없는 지 boolean 결과값으로 받는다.
          answer.push(numbers[i] + numbers[j])
          // 배열 안에 없다면 push()를 사용해서 연산한 값을 넣는다.
        }
      }
    }

    return answer.sort((a,b) => a-b);
    // 문제에서 배열을 오름차순으로 담아 return 하라고 했기 때문에 sort()를 사용한다.
    // (a, b)=>a-b를 한 이유는 배열에서 sort()를 사용하면 오름차순에 오류가 나는 경우가 있어서 a-b를 사용해서 0 보다 작으면 a를 배열에 앞에 놓고 0 보다 크면 b를 배열에 앞에 두도록 한 것이다.
}

https://hianna.tistory.com/403

 

[Javascript] 배열에 특정 값이 포함되어 있는지 여부 체크하기

Javascript의 배열 안에 특정 값이 포함되어 있는지 여부를 체크하는 방법을 소개합니다. 배열에 특정 값이 포함되어 있는지 여부 체크하기 배열 안에 특정 값이 포함되어 있는지 여부를 체크

hianna.tistory.com

주석을 뺸 코드 -> 

function solution(numbers) {
    
    var 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);
}

 

다른 사람이 푼 문제 풀이

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

이 분은 indexOf()를 사용해서 배열 안에 연산한 값이 없으면 -1을 반환하기 때문에 -1이 반환된 경우 배열에 연산 값을 push 하도록 코드를 짜셨다. 이 방법도 좋은 것 같다.

 

https://velog.io/@kim-jaemin420/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%EB%91%90-%EA%B0%9C-%EB%BD%91%EC%95%84%EC%84%9C-%EB%8D%94%ED%95%98%EA%B8%B0

 

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

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

velog.io

 

https://programmers.co.kr/learn/courses/30/lessons/68644

 

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

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

programmers.co.kr

댓글