📊 Algorithm&SQL

[Java/프로그래머스] 나누어 떨어지는 숫자 배열

오늘 ONEUL 2022. 11. 19. 09:34

문제

 

 

 

풀이

(1) 문제 분석하기

  • arr의 길이는 정해져 있지 않으므로 배열 대신 Arraylist 사용
// 선언
List<Integer> list = new ArrayList<>();

// add 메서드로 요소 추가
list.add(element)

// list의 길이
list.size()

// 리스트 오름차순으로 정렬
Collections.sort(list);

// index에 접근
list.get(i)

// String 타입의 List를 배열로 변환할 때
// int 형과 같은 primitive 타입 X
stringList.toArray(new String[0])
  • return 타입이 int 타입의 배열이기 때문에 다시 배열로 변환하여 출력

 

(2) 슈도코드 작성하기

int타입 Arraylist 선언
for(입력 받은 배열의 길이 만큼) {
	if(배열 요소를 divisor로 나눈 나머지가 0이면) {
    	Arraylist.add(배열요소)
    }
}
if(리스트 사이즈가 0이면) {
	배열에 -1을 담아 반환
}
배열 오름차순으로 정렬
Arraylist를 배열로 변환

 

(3) 코드로 구현하기

package algorithm.test02;

import java.util.*;

public class NumberArr {
    // 입력 받은 arr을 전체 배열을 돌면서
    // 조건을 걸어 해당하는 값만 리스트에 추가
    // list.size()가 0이면 바로 -1 넣은 arr 리턴
    // list 정렬해서 다시 arr로 바꿔주고 리턴

    public static void main(String[] args) {
        int[] arr ={5, 9, 7, 10};
        int divisor = 5;

        int[] answer = solution(arr, divisor);
        for (int i = 0; i < answer.length; i++) {
            System.out.println(answer[i]);
        }
    }

    public static int[] solution(int[] arr, int divisor) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % divisor == 0) {
                list.add(arr[i]);
            }
        }
        if (list.size() == 0) {
            int[] answer = {-1};
            return answer;
        }
        Collections.sort(list);
        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i).intValue();
        }
        return answer;
    }
}

 

 

 

 

프로그래머스

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

programmers.co.kr