본문 바로가기
📖 Coding Test/Programmers LV.0

[프로그래머스 LV.0] 연속된 수의 합

by hyebin (Helia) 2023. 1. 20.
프로그래머스 LV.0 모음

연속된 수의 합

문제 설명

연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.

제한 사항

  • 1 ≤ num ≤ 100
  • 0 ≤ total ≤ 1000
  • num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.

입출력 예

num total result
3 12 [3, 4, 5]
5 15 [1, 2, 3, 4, 5]
4 14 [2, 3, 4, 5]
5 5 [-1, 0, 1, 2, 3]

입출력 예 설명

입출력 예 #1

  • num = 3, total = 12인 경우 [3, 4, 5]를 return합니다.

입출력 예 #2

  • num = 5, total = 15인 경우 [1, 2, 3, 4, 5]를 return합니다.

입출력 예 #3

  • 4개의 연속된 수를 더해 14가 되는 경우는 2, 3, 4, 5입니다.

입출력 예 #4

  • 5개의 연속된 수를 더해 5가 되는 경우는 -1, 0, 1, 2, 3입니다.

제출

import Foundation

func solution(_ num:Int, _ total:Int) -> [Int] {
    var answer = [Int]()
    var re = total/num
    var n = num/2
    
    if num%2 == 0{
        answer = Array(re-n+1...re+n)
    }else{
        answer = Array(re-n...re+n)
    }
    return answer
}

 

다른 풀이

import Foundation

func solution(_ num:Int, _ total:Int) -> [Int] {
    let base = (total - (num * (num + 1) / 2)) / num + 1
    return (0..<num).map { $0 + base }
}
반응형

댓글