반응형
여러분 안녕하세요 :>
오늘은 프로그래머스에서 풀어본 "두 개 뽑아서 더하기" 문제를 다뤄볼까 합니다.
문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
입출력 예
numbers | result |
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
- 입출력 예 #1
- 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.)
- 3 = 2 + 1 입니다.
- 4 = 1 + 3 입니다.
- 5 = 1 + 4 = 2 + 3 입니다.
- 6 = 2 + 4 입니다.
- 7 = 3 + 4 입니다.
- 따라서 [2, 3, 4, 5, 6, 7]을 return 해야 합니다.
- 입출력 예 #2
- 2 = 0 + 2 입니다.
- 5 = 5 + 0 입니다.
- 7 = 0 + 7 = 5 + 2 입니다.
- 9 = 2 + 7 입니다.
- 12 = 5 + 7 입니다.
- 따라서 [2, 5, 7, 9, 12]를 return 해야 합니다.
풀이
넘어오는 numbers의 배열수 만큼 for문을 돌려줬어요! i와 j 배열 인덱스가 같지 않을 경우에는 두 개의 값을 더해 새로운 배열에 담아주었고, 마지막에 다 담긴 배열을 정렬해주었답니다!
emptyArr.sort(); 를 그냥 할 경우, String은 정렬이 되지만 int는 정렬이 안된다고해요!
그래서 sort((a, b) => a-b) 를 추가하여 작성하였습니다.
하단에 제가 작성한 코드입니다,,!
풀이 방식은 구현하는 사람마다 매우 다르기때문에 그냥 이렇게 짜는 사람도 있구나 하고 생각해주쎄용😉
function solution(numbers) {
var answer = [];
var emptyArr = [];
for(var i=0; i<numbers.length-1; i++){
for(var j=1; j<numbers.length; j++){
if ( i != j){
var data = numbers[i] + numbers[j];
if(emptyArr.indexOf(data) == -1){
emptyArr.push(data);
}
}
}
}
answer = emptyArr.sort((a,b) => a-b);
return answer;
}
여러분 화이팅팅팅입니다요~!
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스] 최대공약수와 최소공배수 JAVA_LV.1 (0) | 2021.04.02 |
---|---|
[프로그래머스] 크레인 인형뽑기 게임 Javasript_LV.1 (0) | 2021.04.01 |
[프로그래머스] 완주하지 못한 선수 JAVA_LV.1 (1) | 2021.03.30 |