[Coding Test] 두 개 뽑아서 더하기

hailey·2021년 2월 23일
0

CodingTest

목록 보기
2/4

문제

정수 배열 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 해야 합니다.

풀이

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

풀고 나서

마지막 프로젝트에서 파이썬을 사용한 뒤로 꽤 오랜만에 자바스크립트를 다시 쓰고 있다. 초기에 배웠던 것들도 가물가물하고, 이번 기회에 확실하게 공부해야지 싶은 것들도 많아서 하나하나 뜯어가며 보는 중이다. 그만큼 어설프게, 습관처럼 썼던 코드들이 많았다는 뜻일거다.
무심코 변수를 선언하고 반복문을 쓰다가 TDZ에 대해 공부했고,배열 관련 메소드들이나 화살표 함수 같은 자잘한 쓰임에 대해서도 다시 살펴봤다.
문제를 꼼꼼히 읽지 않아 두 개 인덱스의 중복을 피해야 한다는 건 구글링을 통해 알게 됐다. 어쩐지 if문부터 코드가 꼬여버려서 시간을 많이 썼다. 갯수나 정답보다는 과정에 연연하면서 풀어보자.

참고한 자료

배열 메소드 https://opentutorials.org/course/50/89
TDZ에 대한 블로그 https://ui.toast.com/weekly-pick/ko_20191014
호이스팅에 대한 블로그 https://gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html
배열 정렬하기 https://hianna.tistory.com/409
다른 분의 풀이(1) 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
다른 분의 풀이(2) https://deok2kim.tistory.com/200
비교연산자 사용에 대한 블로그 https://zinee-world.tistory.com/112

profile
옳고 그름을 고민합니다

0개의 댓글