
내가 생각했을때 문제에서 원하는부분
정수 배열 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;
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.