알고리즘/프로그래머스

[Programmers] Lv.1 두 개 뽑아서 더하기 _JavaScript

3o14 2023. 5. 7. 13:14
728x90
반응형

 

프로그래머스 Lv1. 두 개 뽑아서 더하기 문제 풀이

🧶 문제 설명

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

 

 

 

제한사항

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

 

입출력 예

numbers result
[2,1,3,4,1] [2,3,4,5,6,7]
[5,0,2,7] [2,5,7,9,12]

 

 

 

🧶 접근 방식

단순하게 생각해서 이중 for문으로 만들었습니다. 중복 제거는 includes를 사용했고 같은 인덱스 요소 끼리 더하지 않도록 if문으로 예외처리 해주었습니다. 오름차순 정렬은 sort를 이용했습니다.

 

 

 

🧶 내 풀이

function solution(numbers) {
    var answer = [];
    
    for(let i in numbers) {
        for( let j in numbers) {
            if( i !== j) { // 반복자 i와 j가 같은 인덱스일 경우 제외
            	// 두 요소를 더한 값이 answer 배열에 없을 경우에만 push
                answer.includes(numbers[i] + numbers[j]) ? null : answer.push(numbers[i] + numbers[j]);
            }
        }
    }
    
    // sort 오름차순 정렬
    return answer.sort((a, b) => a - b);
}

이렇게 비교적 간단하게 풀었는데 어떤 분은 Set을 이용해서 중복 제거를 했더군요! 이번 기회에 Set을 다시 공부해봐야겠습니당

 

 

 

🧶 다른 풀이

아래 코드가 Set을 이용한 중복제거 코드입니다.

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])
        }
    }

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

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

Set은 집합과 같아서 자동으로 중복되는 요소는 하나의 요소로 표기됩니다.

 

 

🧶 후기

얼마만에 풀어보는 알고리즘인지.. 😧 이제 알고리즘 스터디도 시작했겠다 꾸준히 열심히 하겠습니다

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

LIST