loading
본문 바로가기
Coding/Programers

[ Programmers ] 보다 커질 때까지 더하기 ( java ) 69 / 124

by NeuLyeo 2024. 1. 5.

[ Programmers ] 보다 커질 때까지 더하기 ( java ) 69 / 124

 

프로그래머스

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

programmers.co.kr

 

 

 

 

📚 Table of Contents

     

     

     

     

    문제 설명

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

     

     

    제한사항

    • 1 ≤ numbers의 길이 ≤ 100
    • 1 ≤ numbers의 원소 ≤ 100
    • 0 ≤ n < numbers의 모든 원소의 합

     

    입출력 예

    numbers n result
    [34, 5, 71, 29, 100, 34] 123 139
    [58, 44, 27, 10, 100] 139 239

     

     

    입출력 예 설명

    입출력 예 #1

    • 예제 1번의 numbers를 문제 설명대로 더해가는 과정을 나타내면 다음의 표와 같습니다.
    i numbers[i] sum
        0
    0 34 34
    1 5 39
    2 71 110
    3 29 139

     

    29를 더한 뒤에 sum 값은 139이고 n 값인 123보다 크므로 139를 return 합니다.

    • 예제 2번의 numbers의 마지막 원소 전까지의 원소를 sum에 더하면 139입니다. 139는 n 값인 139보다 크지 않고 마지막 원소인 100을 더하면 139보다 커지므로 239를 return 합니다.

     

     

     

     

    문제 풀이

    코드 설명

    코드의 목적:

    이 코드는 주어진 정수 배열에서 원소들을 순서대로 더하다가 합계가 n을 초과하면 그 즉시 반복을 중단하고, 그 때까지의 합계를 반환하는 기능을 가진 알고리즘입니다.

     

    코드의 주요 구조:

    1. 합계 초기화: 합계를 0으로 초기화합니다.
    2. for문: 주어진 배열의 각 원소에 대해 반복문을 실행합니다.
    3. 합계 계산: 각 원소를 합계에 더합니다.
    4. 조건문: 합계가 n을 초과하면 반복을 중단합니다.
    5. 반환: 합계를 반환합니다.

     

    코드의 주요 알고리즘:

    1. 배열의 각 원소에 대해 반복문을 실행합니다.
    2. 각 원소를 합계에 더합니다.
    3. 합계가 n을 초과하면 반복을 중단합니다.
    4. 합계를 반환합니다.

     

    코드의 핵심:

    1. for문과 if문을 이용하여 합계가 n을 초과하는 시점을 찾아냅니다.
    2. break를 이용하여 반복을 즉시 중단합니다.
    3. 합계를 반환합니다.

     

     

     

    풀이

    class Solution {
        public int solution(int[] numbers, int n) {
            // 합계를 0으로 초기화
            int sum = 0;
    
            // 주어진 배열의 각 원소에 대해 반복문을 실행
            for (int i = 0; i < numbers.length; i++) {
    
                // 각 원소를 합계에 더함
                sum += numbers[i];
    
                // 합계가 n을 초과하면 반복을 중단
                if (sum > n) break;
            }
    
            // 합계를 반환
            return sum;
        }
    }