본문 바로가기
algorithm

[프로그래머스]약수 구하기 -java,python

by skysline 2023. 3. 9.
반응형

`약수 구하기`

문제 설명

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

결과예시


입출력 예 #1

  • 24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.

입출력 예 #2

  • 29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다.

 java code

import java.util.ArrayList;
class Solution {
    public ArrayList solution(int n) {
        ArrayList answer = new ArrayList<>();
        for (int i = 1; i < n+1; i++) {
            if (n%i==0) {
                answer.add(i);
            }
        }
        return answer;
    }
}
  • 다른풀이
import java.util.ArrayList;
class Solution {
    public ArrayList solution(int n) {
       return IntStream.rangeClosed(1,n).filter(i -> n%i==0).toArray();
    }
}

n까지의 수 중에서 n으로 나누어 떨어지는 수(i)를 찾아 answer 리스트에 추가합니다. 이 때, n % i == 0 조건문을 사용하여 n을 i로 나눈 나머지가 0인지 검사합니다.

예를 들어, solution(24)를 호출하면 for 루프에서 i가 1, 2, 3, 4, 6, 8, 12, 24일 때, n % i == 0 조건이 참이 되므로 각각 1, 2, 3, 4, 6, 8, 12, 24를 answer 리스트에 추가합니다. 따라서 answer 리스트는 [1, 2, 3, 4, 6, 8, 12, 24]가 됩니다.

python code

def solution(n):
    lst = []
    for i in range(1,n+1):
        if n%i == 0:
            lst.append(i)
    return lst

다른풀이

def solution(n):
	lst = [i for i in range(1,n+1) if n%i==0]
    return lst

반응형

댓글