Loading the catalog…
Loading the catalog…
문제 내가 생각했을때 문제에서 원하는부분 소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요. 내가 이 문제를 보고 생각해본 부분 int[] testCases = {12, 17, 420}; 프로그래머스 입출력 예시에 제시된 세 가지 테스트 값을 배열에 미리 담아둔다. for (int n : testCases) 반복문을 사용해 배열 안의 숫자를 하나씩 꺼내고, 이를 solution 메서드에 매개변수로 전달한다. System.out.println(Arrays.toString(result)); solution 메서드가 반환한 결과 배열을 콘솔에 가독성이 좋은 형태([값, 값])로 출력한다. List<Integer> list = new ArrayList<>(); 소인수의 개수가 정해져 있지 않기 때문에 크기가 유동적으로 조절되는 가변 리스트를 선언한다. for (int i = 2; i <= n; i++) 2부터 시작하여 n까지의 자연수로 나누어보며 소인수를 찾는다. 별도의 소수 판별 로직이 필요 없는 이유는 2부터 차례대로 나누어가면 4나 6 같은 합성수는 이미 작은 소수들에 의해 먼저 걸러지기 때문이다. if (n % i == 0) n을 i로 나누었을 때 나머지가 0이라면 i는 n의 소인수이다. 따라서 list.add(i)를 통해 리스트에 추가한다. while (n % i == 0) { n /= i; } n이 더 이상 i로 나누어떨어지지 않을 때까지 계속 나누어 값을 줄인다. 이 과정을 통해 중복된 소인수가 리스트에 여러 번 쌓이는 것을 방지한다. return list.stream().mapToInt(i -> i).toArray(); 지금까지 모은 리스트를 자바 스트림(Stream) API를 활용해 기본형 정수 배열(int[])로 변환한 뒤 반환한다. 코드로 구현 import java.util.ArrayList; import java.util.List; class Solution { public int[] solution(int n) { List<Integer> list = new ArrayList<>(); for (int i = 2; i <= n; i++) { if (n % i == 0) { list.add(i); while (n % i == 0) { n /= i; } } } return list.stream().mapToInt(i -> i).toArray(); } } 프로그래머스 코드 package programmers.programmers2; import java.util.ArrayList; import java.util.Arrays; import java.util.List; // 프로그래머스 소인수분해 public class Main165 { public static void main(String[] args) { // 입출력 예시에 있는 모든 값들을 배열에 담아둡니다. int[] testCases = {12, 17, 420}; // 반복문을 돌며 각각의 입력값에 대한 소인수분해 결과를 확인합니다. for (int n : testCases) { int[] result = solution(n); System.out.println(Arrays.toString(result)); } } public static int[] solution(int n) { List<Integer> list = new ArrayList<>(); for (int i = 2; i <= n; i++) { if (n % i == 0) { list.add(i); while (n % i == 0) { n /= i; } } } return list.stream().mapToInt(i -> i).toArray(); } } 위에 있는 코드를 변경한 코드 마무리 코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
프로그래머스 소인수분해. 문제 내가 생각했을때 문제에서 원하는부분 소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요. 내가 이 문제를 보고 생각해본 부분 int[] testCases = {12, 17, 420}; 프로그래머스 입출력 예시에 제시된 세 가지 테스트 값을 배열에 미리 담아둔다. for (int n : testCases) 반복문을 사용해 배열 안의 숫자를 하나씩 꺼내고, 이를 solution 메서드에 매개변수로 전달한다.…
Open source