
내가 생각했을때 문제에서 원하는부분
정수 n과 k가 주어졌을 때, 1 이상 n이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
내가 이 문제를 보고 생각해본 부분
solution(int n, int k) 메서드는 주어진 정수 n과 k를 받아 1부터 n까지 중 k의 배수를 모두 배열로 반환하는 기능을 한다.
main 메서드는 Java 애플리케이션의 진입점이며, 여기서 solution 메서드를 호출해 결과를 확인한다.
int count = n / k;
n까지 k의 배수가 몇 개인지 계산하는 부분이다. 예를 들어 n=10, k=3에서 3의 배수는 3, 6, 9 총 3개이므로 10 / 3 = 3이 된다.
int[] answer = new int[count];
k의 배수를 담을 배열을 생성하는 부분이다. 크기는 count로 설정하여 정확한 크기를 미리 확보한다.
for (int i = 0; i < count; i++) { answer[i] = k * (i + 1); }
반복문에서 1배수부터 count배수까지의 값을 배열에 순서대로 저장한다. 배열 인덱스는 0부터 시작하기 때문에 k * (i + 1)로 계산한다.
return answer;
완성된 k의 배수 배열을 반환한다.
Main44 sol = new Main44();
solution 메서드는 인스턴스 메서드라서 객체를 생성한 후 호출한다.
int[] result1 = sol.solution(n1, k1);
첫 번째 테스트 케이스의 결과를 받아온다.
출력 부분은 배열의 각 요소를 콘솔에 쉼표로 구분하여 출력하며, 마지막 요소 뒤에는 쉼표가 나오지 않도록 조건문으로 처리한다.
코드로 구현
class Solution {
public int[] solution(int n, int k) {
int count = n / k;
int[] answer = new int[count];
for (int i = 0; i < count; i++) {
answer[i] = k * (i + 1);
}
return answer;
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 배열 만들기 1
public class Main44 {
public int[] solution(int n, int k) {
int count = n / k;
int[] answer = new int[count];
for (int i = 0; i < count; i++) {
answer[i] = k * (i + 1);
}
return answer;
}
public static void main(String[] args) {
Main44 sol = new Main44();
// 예시 1
int n1 = 10, k1 = 3;
int[] result1 = sol.solution(n1, k1);
System.out.print("[");
for (int i = 0; i < result1.length; i++) {
System.out.print(result1[i]);
if (i != result1.length - 1) System.out.print(", ");
}
System.out.println("]");
// 예시 2
int n2 = 15, k2 = 5;
int[] result2 = sol.solution(n2, k2);
System.out.print("[");
for (int i = 0; i < result2.length; i++) {
System.out.print(result2[i]);
if (i != result2.length - 1) System.out.print(", ");
}
System.out.println("]");
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.