[프로그래머스(LV1)] 두 개 뽑아서 더하기

희희희·2022년 1월 18일
0

문제 설명

정수 배열 numbers가 주어질 때, numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해라.

  • 입출력 예

[2,1,3,4,1]의 두 수로 만들 수 있는 수는 [2,3,4,5,6,7]이다.


내가 작성한 코드

import Foundation

func solution(_ numbers:[Int]) -> [Int] {
    
    var num = 0
    var result: [Int] = []
    
    for i in 0..<numbers.count - 1 {
        for j in i+1..<numbers.count {
            num = 0
            num = numbers[i] + numbers[j]
            if !result.contains(num) {
                result.append(num)
            }
        }
    }
    return result.sorted{$0 < $1}
}

이번 문제는 굉장히 쉬운 문제였다. for문을 한 번 중첩시켜 해결할 수 있었다.

배열에서 인접한 두 개의 수를 더하는데 이전꺼와 영향이 없도록 두 번째 for문에서는 j를 i+1부터 하였다.

또한 i가 마지막 인덱스라면 j는 존재하지 않을 것이므로 i는 numbers.count에서 1을 빼준 것의 미만까지 반복하도록 하였고, j는 i+1부터 마지막 인덱스까지 반복하도록 하였다.

매 구문마다 새로운 수가 만들어지므로 for문 안에서 num을 0으로 매번 초기화하도록 하였다.

result배열 안에 이미 더한 수가 있는 지 contains로 확인하여 중복되지 않도록 없을 경우에만 append해주었다.


2단계부터 도전할까 했었는데, 남은 1단계 문제를 다 해결한 뒤에 2단계를 하는게 나을 것 같다.

profile
iOS 어플 개발 연습

0개의 댓글