프로그래머스 n보다 커질 때까지 더하기

KIMYEONGJUN·2026년 6월 24일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

정수 배열 numbers와 정수 n이 매개변수로 주어집니다.
numbers의 원소를 앞에서부터 하나씩 더하다가 그 합이 n보다 커지는 순간 이때까지 더했던 원소들의 합을 return 하는 solution 함수를 작성해 주세요.

내가 이 문제를 보고 생각해본 부분

main 메서드는 프로그램의 시작점이다.
main 내부에서 두 개의 테스트 케이스를 각각 준비한다.
첫 번째 테스트 케이스는 배열 numbers1과 값 n1으로 구성되어 있다.
두 번째 테스트 케이스는 배열 numbers2와 값 n2로 구성되어 있다.
각 케이스에 대해 solution 메서드를 호출하여 결과를 받는다.
System.out.println을 통해 각 결과를 콘솔에 출력한다.
solution 메서드는 다음과 같이 동작한다.
sum 변수를 0으로 초기화한다. 이 변수는 배열 원소들의 누적 합을 저장한다.
for-each 반복문으로 입력받은 numbers 배열을 앞에서부터 한 원소씩 순회한다.
반복문 내에서 현재 원소를 sum에 더한다.
sum이 주어진 정수 n보다 커지는지를 검사한다.
만약 sum > n이면, 지금까지 더한 합인 sum을 즉시 반환한다.
반복문이 끝나도 sum이 n보다 커지지 않는다면 마지막 sum 값을 반환한다. (문제 조건상 여기서 멈추는 경우는 없다.)

코드로 구현

class Solution {
    public int solution(int[] numbers, int n) {
        int sum = 0;
        for (int num : numbers) {
            sum += num;
            if (sum > n) {
                return sum;
            }
        }
        return sum;
    }
}

프로그래머스 코드

package programmers;

// 프로그래머스 n보다 커질 때까지 더하기
public class Main61 {
    public static void main(String[] args) {
        int[] numbers1 = {34, 5, 71, 29, 100, 34};
        int n1 = 123;
        int result1 = solution(numbers1, n1);
        System.out.println(result1);  // 139 출력

        int[] numbers2 = {58, 44, 27, 10, 100};
        int n2 = 139;
        int result2 = solution(numbers2, n2);
        System.out.println(result2);  // 239 출력
    }

    public static int solution(int[] numbers, int n) {
        int sum = 0;
        for (int num : numbers) {
            sum += num;
            if (sum > n) {
                return sum;
            }
        }
        return sum;
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글