알고리즘 문제

알고리즘 문제 js 32- 두개 뽑아서 더하기

<zinny/> 2022. 1. 29. 08:55
728x90

내가 쓴 코드 

function solution(numbers) {
    let sum =[]	//일단 빈배열 만들기 
    for(let i=0; i<numbers.length; i++){	//기준이 될 배열의 요소
        for(let j= i+1; j<numbers.length; j++){		//더해줄 배열의 요소 (기준 값을 잘 봐야함)
            sum.push(numbers[i] + numbers[j])		//더해준 값을 빈 배열에 푸시
        } 
    } 
    let answer = new Set(sum)		//중복 제거
    let new_arry = [...answer];		//다시 배열로 변경
    return new_arry.sort((a,b)=>a-b)	//오름 차순 정렬
}

문제의 규칙을 찾으려고 했다 

배열의 0번에 +1번+2번+3번+4번

배열의 1번에 +2번+3번+4번

배열의 2번에 +3번+4번

배열의 3번에 +4번

의 규칙으로 진행되서 이중 포문을 사용하기로 했다

 

첫번째 포문에 두번째 포문을 더해주면 될꺼같았다. 

그래서 이중 포문을 작성했다.

 

그리고 나온 값들을 일단 새로 만들 배열에 넣도록 했고

중복을 제거하는 함수를 사용해서 중복을 제거했다

중복 제거 함수를 쓰고 나면 배열이 아니게 되기 때문에 

스프레드 문법을 통해서 다시 배열로 바꿔줬다

그리고 오름 차순으로 정렬한 값을 리턴하는 방식으로 진행했다


다른 사람이 쓴 코드 

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

    const answer = [...new Set(temp)] //좀더 간결하게 쓸수 있넹,,, 

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