[Programmers] Lv0 n의 배수 고르기 Java

2023. 1. 24. 22:00CS/자료구조 & 알고리즘

728x90

문제 출처

[프로그래머스 코딩 테스트 연습]

https://school.programmers.co.kr/learn/courses/30/lessons/120905

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이

문제는 numlist에서 n의 배수만 걸러내는 것이다.

 

거의 모든 프로그래밍 언어는 나머지 연산자를 제공해 준다.

 

n의 배수라는 말은 어떤 수가 n으로 나누어 떨어지는 수라고 할 수 있다.

 

이를 자바로 표현하면 다음과 같다.

 

if ( num % n == 0) {
    // n의 배수일때 실행되는 코드
}

 

이를 배열로 구현한다면 배열을 여러 번 생성해야 하므로 이를 해결하기 위해서 ArrayList를 이용한다.

ArrayList는 제네릭을 지원해주기 때문에 <> 안에 클래스 타입을 적으면 된다. 이때 int가 아닌 Integer을 이용해야 된다.

ArrayList의 길이는 가변적이므로 최대 길이를 신경을 쓰지 않아도 된다.

ArrayList에 요소를 추가하려면 add(Object)를 이용하면 된다.

 

ArrayList<Integer> numList = new ArrayList<>();

for (int num : numlist)
    if (num % n == 0)
        numList.add(num);

 

이후 ArrayList를 Intger에서 int로 변환해 주면 된다.

 

 

소스 코드

import java.util.ArrayList;

public class Solution {
    public int[] solution(int n, int[] numlist) {

        ArrayList<Integer> numList = new ArrayList<>();

        for (int num : numlist)
            if (num % n == 0)
                numList.add(num);

        return numList.stream().mapToInt(i->i).toArray();
    }
}
728x90