본문 바로가기
프로그래머스

[프로그래머스][Kotlin] 연속된 수의 합

by jinwo_o 2024. 8. 1.
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

연속된 세 개의 정수를 더해 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

  • 설명 생략

코드 1

class Solution {
    fun solution(num: Int, total: Int): IntArray {
        val answer = mutableListOf<Int>()
        
        for (i in 0 until num) {
            answer.add((total - (num * (num - 1)) / 2) / num + i)
        }
        
        return answer.toIntArray()
    }
}

 

풀이 1

  • total = start + (start + 1) + (start + 2) + ... + (start + num - 1) = num * start + (1 + 2 + ... + num)
  • 1 + 2 + ... + num = (num * (num - 1)) / 2
  • 따라서 start = (total - (num * (num - 1)) / 2) / num
  • 마지막으로 반복문에서 i 를 더해서 연속된 정수들을 생성한다.

코드 2

class Solution {
    fun solution(num: Int, total: Int): IntArray {
        val answer = mutableListOf<Int>()
        
        var d = 0
        for (i in 0..num - 1) {
        	d += i
        }
        
        val start = (total - d) / num
        
        for (i in start..start + num - 1) {
            answer.add(i)
        }
        
        return answer.toIntArray()
    }
}

 

코드 3

class Solution {
    fun solution(num: Int, total: Int): IntArray {
        val answer = mutableListOf<Int>()
        
        val sum = (0..num - 1).sum()
        val diff = total - sum
        val start = diff / num
        
        for (i in 0 until num) {
            answer.add(start + i)
        }
        
        return answer.toIntArray()
    }
}

 

[프로그래머스] LEVEL0 연속된 수의 합 파이썬

[프로그래머스] LEVEL0 연속된 수의 합

velog.io