Загружаем каталог…
Загружаем каталог…
문제 내가 생각했을때 문제에서 원하는부분 소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 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(); } } 위에 있는 코드를 변경한 코드 마무리 코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
프로그래머스 소인수분해. 문제 내가 생각했을때 문제에서 원하는부분 소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요. 내가 이 문제를 보고 생각해본 부분 int[] testCases = {12, 17, 420}; 프로그래머스 입출력 예시에 제시된 세 가지 테스트 값을 배열에 미리 담아둔다. for (int n : testCases) 반복문을 사용해 배열 안의 숫자를 하나씩 꺼내고, 이를 solution 메서드에 매개변수로 전달한다.…
Открыть источник