문제 설명
정수 배열 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] |
사용 메서드 및 속성
length | Array 인스턴스의 속성으로 배열의 길이를 반환합니다. |
push() | 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환합니다. |
sort() | 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. |
from() | 유사 배열 객체나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운 Array 객체를 만듭니다. |
어떻게 풀어요?
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
입력되는 값은 정수 배열 numbers이고 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 오름차순으로 담아서 반환해야 하는 문제입니다.
서로 다른 인덱스에 있는 두 수를 찾아서 더해야 하기 때문에 for문을 2번 돌아야겠네요. 하지만 그냥 for문만 2번 돌았다가는 중복되는 수가 나올 수 있겠죠? 그렇다면 그 중복값을 어떻게 없애야 할까요?
for문을 더 사용해서 중복값을 제거할 수 있겠지만 그건 너무 시간낭비 잖아요.
그래서 이 문제는 중복값을 허용하지 않는 Set을 사용해서 배열에 담긴 중복값을 전부 제거해주고, sort() 메소드를 사용해서 오름차순으로 정렬한 뒤, Array.from() 메소드를 사용해서 Set을 배열로 다시 바꿔줬답니다.
트리스티의 답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function solution(numbers) {
var answer = [];
var box = [];
for (var i = 0; i < numbers.length; i++) {
for (var j = i+1; j < numbers.length; j++) {
box.push(numbers[i] + numbers[j]);
}
}
var sortBox = Array.from(new Set(box)).sort(function(a,b) { return a - b; });
answer = sortBox;
return answer;
}
|
cs |
※ 잘못된 정보가 있거나 수정사항이 있다면 댓글로 남겨주세요!
'Python > [백준] 문제 풀기' 카테고리의 다른 글
[10869] 사칙연산 (0) | 2021.03.14 |
---|---|
[1914] 하노이 탑 (0) | 2021.03.11 |
[7576] 토마토 (0) | 2021.03.11 |
[1003] 피보나치 함수 (0) | 2021.03.11 |
[11053] 가장 긴 증가하는 부분 수열 (0) | 2021.03.11 |