코딩항해기

[프로그래머스] 연속된 수의 합 (JAVA, Python) 본문

problem solving/코딩 테스트

[프로그래머스] 연속된 수의 합 (JAVA, Python)

miniBcake 2024. 11. 24. 21:43

 

 

 

JAVA

package test;

import java.util.Arrays;

public class Desc {
    public static void main(String[] args) {
        int num = 3;
        int total = 12;
        System.out.println("3,4,5 : "+ Arrays.toString(solution(num, total)));
    }

    public static int[] solution(int num, int total) {
        //등차수열을 활용해 시작번호 구하기
        //(total - num*(num-1)/2) / num
        //num만큼 반복해 시작 번호를 배열에 저장
        //배열 반환
        int[] answer = new int[num];
        int startNum = (total - num*(num-1)/2) / num; //시작번호

        for(int i = 0; i < num; i++) { //startNum부터 num만큼 반복
            answer[i] = startNum++; //배열에 저장
        }

        return answer;
    }
}

 

 

Python

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

#입출력 예
# 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]

def solution(num, total):
    answer = []

    #(total - num*(num-1)/2) / num을 하면 시작 번호를 구할 수 있다.
    #시작번호부터 num만큼 1씩 더한 값을 배열에 저장한다 (answer)

    startNum = int((total - num*(num-1)/2) / num) #시작번호 구하기
    for i in range(num): #num만큼 반복
        answer.append(startNum) #배열에 저장하기
        startNum += 1 #숫자 증가하기

    return answer

num = 3
total = 12
print("3,4,5 : "+str(solution(num, total)))

 

코드 풀이가 문제가 아니고 수학이 문제인 것 같다....