반응형
프로그래머스
문제명 : 문자열 내 p와 y의 개수나누어 떨어지는 숫자 배열
언어 : 자바(java)
int 형태의 array를 받아서
divisor로 나눠본 뒤에
나누어지는 수를 오름차순 정렬한 후
answer 배열에 담아 반환하고
만약 나누어지는 숫자가 없다면 -1를 담아 반환하는 문제인데
문제에서 포인트는 배열을 받아와서 나누고 어떻게 오름차순 정렬해서 담지?
이거다
일단 내 풀이는 아래와 같은데
for문을 돌려서 나누어 떨어지는 값을 list에 담아준 다음에
Collection.sort로 list의 값을 오름차순으로 정렬하고
반환할 answer 배열을 list의 크기로 정의해 준 뒤에
먼저 나누어 떨어지는 값이 없으면 answer 배열의 크기를 한칸짜리로 만든 뒤
바로 -1 넣고 반환해버리고
그렇지 않고 나누어 떨어지는 값이 있을 경우에는
for문을 돌려서 list의 길이만큼 배열에 넣고 반환한다
처음에는 list에 넣은다음에 list를 array 형태로 바꿔서 반환하려고 했는데
Solution이 int[] 타입으로 반환해야 하는데
list에서는 Integer[] 타입만 반환할 수 있으므로 그게 안되더라
그래서 list를 한번 돌려서 answer 배열안에 한번 더 넣는 과정을 거쳤는데
뭔가 짱구를 좀 더 굴려보면 list 한방에 변환해서 반환할 수 있을 것 같은데
거기까지는 머리가 안굴러가더라
마지막으로
아래 코드를 복사 붙여넣기 하면
프로그래머스 문제는 바로 끝이 난다
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int[] solution(int[] arr, int divisor) {
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i<arr.length; i++) {
if(arr[i] % divisor == 0) {
list.add(arr[i]);
}
}
Collections.sort(list);
int[] answer = new int[list.size()];
if(list.size() == 0) {
answer = new int[1];
answer[0] = -1;
} else {
for(int i =0; i<list.size(); i++) {
answer[i] = list.get(i);
}
}
return answer;
}
}
반응형
'IT > Algorithm' 카테고리의 다른 글
프로그래머스(Programmers) 2016년(java) (0) | 2019.08.15 |
---|---|
프로그래머스(Programmers) 두 정수 사이의 합(java) (0) | 2019.08.15 |
프로그래머스(Programmers) 문자열 내 p와 y의 개수(java) (0) | 2019.08.10 |
프로그래머스(Programmers) 같은 숫자는 싫어(java) (0) | 2019.08.08 |
프로그래머스(Programmers) 가운데 글자 가져오기(java) (0) | 2019.08.08 |
댓글