-
[Programmers] Lv.1 두 개 뽑아서 더하기 _JavaScript알고리즘/프로그래머스 2023. 5. 7. 13:14728x90반응형
프로그래머스 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은 집합과 같아서 자동으로 중복되는 요소는 하나의 요소로 표기됩니다.
🧶 후기
얼마만에 풀어보는 알고리즘인지.. 😧 이제 알고리즘 스터디도 시작했겠다 꾸준히 열심히 하겠습니다
LIST'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] Lv.1 과일 장수 _JavaScript (0) 2023.05.14 [Programmers] Lv.1 체육복 _Javascript (0) 2023.05.09 [Programmers] Lv.1 키패드 누르기 _JavaScript (0) 2023.05.06 [Programmers] Lv.1 덧칠하기 _JavaScript (0) 2023.05.02 [Programmers] Lv.1 추억 점수 _JavaScript (0) 2023.05.01