프로그래머스-없는 숫자 더하기

효딩딩·2023년 12월 16일
0

문제

풀이

❓ .contains() 메서드

  • 컬렉션 내에 특정 요소가 존재하는지 확인하는 메서드입니다.
  • 요소가 존재한다면 true 를 반환하고 그렇지 않다면 false를 반환합니다.

❓.reduce() 메서드

  • 컬렉션(예: 배열)의 모든 요소를 하나의 값으로 결합하는 데 사용되는 방법입니다.
  • 두 매개변수를 받으며 하나는 누적된 값이고 하나는 컬렉션의 현재 요소입니다. 클로저의 반환값은 다음 요소에 대한 연산을 위한 새로운 누적값이 됩니다.

풀이 1

  • num 변수에 0...9 요소를 할당합니다.
  • for 문을 통해 num 배열의 각 숫자(i) 를 반복하면서 if 문을 이용해 number 배열에 i가 없다면 없는 숫자를 count 변수에 더합니다.
  • 없는 숫자가 더해진 count를 return 합니다.
func solution(_ numbers:[Int]) -> Int {
    var num = [0,1,2,3,4,5,6,7,8,9]
    var count = 0
    
    for i in num {
        if !numbers.contains(i) {
            count += i
        }
    }
    return count
}

solution([1,2,3,4,6,7,8,0])
solution([5,8,4,0,6,7,9])

풀이 2 - 풀이 1의 조건의 num 부분이 하드코딩인것같아서 다시 풀이함.

  • 0부터 9까지의 모든 숫자들의 합은 45이고 num이라는 변수에 할당합니다.
  • numbers 배열에 있는 모든 숫자들의 합을 reduce 메서드를 사용하여 계산합니다.
    reduce의 첫 번째 매개변수는 초기값인 0이고, 두 번째 매개변수는 더하기 연산(+)입니다.
    이 연산은 배열의 모든 요소를 순회하면서 누적 합계를 계산합니다.
  • num에서 numbers 배열의 합계를 빼면, 배열에 없는 숫자들의 합이 되기 때문에 리턴해주니다.
func solution(_ numbers:[Int]) -> Int {
    var num = 45
    let result = numbers.reduce(0, +)
    
    return num - result
    
}

solution([1,2,3,4,6,7,8,0])
solution([5,8,4,0,6,7,9])
profile
어제보다 나은 나의 코딩지식

0개의 댓글