
내가 생각했을때 문제에서 원하는부분
정수 start_num와 end_num가 주어질 때, start_num에서 end_num까지 1씩 감소하는 수들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
내가 이 문제를 보고 생각해본 부분
Main46 클래스 내부에 Solution이라는 static 내부 클래스를 정의하고 있다.
이 클래스 안에 solution 메서드가 구현되어 있다.
solution 메서드는 두 개의 정수 start_num과 end_num을 입력받아, start_num부터 end_num까지 감소하는 숫자를 담은 배열을 반환한다.
먼저 배열의 크기를 start_num - end_num + 1로 계산하여 배열 answer를 생성한다.
여기서 +1은 두 숫자 모두 포함하기 위함이다.
for 반복문은 0부터 size - 1까지 반복하면서 배열의 각 인덱스에 start_num에서 i를 뺀 값을 할당한다.
즉, 배열 첫 번째 요소는 start_num, 두 번째 요소는 start_num - 1 이런 식으로 채워진다.
완성된 배열 answer를 반환한다.
main 메서드에서는 Solution 객체를 만들어 solution 메서드를 호출하고 결과 배열을 저장한다.
이후 for 문을 사용하여 배열의 각 값을 출력하며, 요소 사이에 쉼표와 공백을 넣어 [10, 9, 8, 7, 6, 5, 4, 3]과 같이 보이도록 출력한다.
마지막에 System.out.println()으로 배열 출력 종료를 알리는 대괄호 닫기 및 줄바꿈을 한다.
코드로 구현
class Solution {
public int[] solution(int start_num, int end_num) {
int size = start_num - end_num + 1;
int[] answer = new int[size];
for (int i = 0; i < size; i++) {
answer[i] = start_num - i;
}
return answer;
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 카운트 다운
public class Main46 {
// solution 메서드를 포함한 클래스를 별도로 구현해도 되고,
// 여기에 넣어도 됨
static class Solution {
public int[] solution(int start_num, int end_num) {
int size = start_num - end_num + 1;
int[] answer = new int[size];
for (int i = 0; i < size; i++) {
answer[i] = start_num - i;
}
return answer;
}
}
public static void main(String[] args) {
Solution sol = new Solution();
// 예시: 10부터 3까지 카운트 다운
int start_num = 10;
int end_num = 3;
int[] result = sol.solution(start_num, end_num);
// 결과 출력
System.out.print("[");
for (int i = 0; i < result.length; i++) {
System.out.print(result[i]);
if (i < result.length - 1) System.out.print(", ");
}
System.out.println("]");
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.