본문 바로가기

코딩테스트 스터디

코딩테스트 연습 - n의 배수 고르기 (JAVA)

프로그래머스 코딩테스트 입문 0단계 문제입니다

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

 

프로그래머스

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

programmers.co.kr

 

📢 문제 설명

정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

 

⭕ 정답 코드

1. 동적 배열 List 사용하기

import java.util.*;
class Solution {
    public int[] solution(int n, int[] numlist) {
        List<Integer> list = new ArrayList<>();
        for(int i = 0; i<numlist.length; i++)
            if(numlist[i]%n==0) 
                list.add(numlist[i]);
        
        return list.stream().mapToInt(i->i).toArray();
    }
}

🔍 해설

Integer List를 생성한다

반복문 속에서 numlist의 요소들이 n으로 나뉘어지면

List에 해당 요소를 추가시켜준다

List를 Stream으로 바꿨다가 배열로 바꿔 제출한다

 

 

 

 

2. Stream filter 사용하기

return Arrays.stream(numlist).filter(i -> i%n==0).toArray();

🔍 해설

Arrays.stream() int 배열을 stream으로 변환시키고

filter() n으로 나뉘어지는 요소만 stream에 남긴다

toArray() → 배열로 바꿔 제출한다

 

 

 

⚠️ 직접 풀어본 처음 풀이

🔗 코드

import java.util.*;
class Solution {
    public int[] solution(int n, int[] numlist) {
        List<Integer> list = new ArrayList<>();
        for(int i = 0; i<numlist.length; i++)
            if(numlist[i]%n==0) 
                list.add(numlist[i]);
        
        return list.stream().mapToInt(i->i).toArray();
    }
}

 

정답 코드의 1번과 같은 코드이다

🔍 해설

Integer List를 생성한다

반복문 속에서 numlist의 요소들이 n으로 나뉘어지면

List에 해당 요소를 추가시켜준다

List를 Stream으로 바꿨다가 배열로 바꿔 제출한다

 

 

📒 기억하고 갈 문법

Stream의 filter() 메서드는 조건에 맞지 않는 요소는 없애준다

toArray()메서드는 Stream을 배열로 반환시켜준다