728x90
프로그래머스 _ 코딩 기초 트레이닝 DAY 21 - (1)
출처 -https://school.programmers.co.kr/learn/courses/30/lessons/181852
문제 | 정수로 이루어진 리스트 num_list가 주어집니다. num_list에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
입력 #1 | [12, 4, 15, 46, 38, 1, 14, 56, 32, 10]
출력 #1 | [15, 32, 38, 46, 56]
>> 풀이 <<
주어진 배열을 오름차순 정렬 한 후에 앞 5개를 제외하고 자르면 된다.
- 배열 오름차순 정렬하기 - Arrays.sort(arr)
- stream에서는 sorted를 사용하니 헷갈리지 말기!
- 배열 자르기 - Arrays.copyOfRange(arr,startIdx,endIdx)
- Arrays.copyOfRange(arr,startIdx,endIdx)는 arr을 startIdx부터 endIdx 직전까지 잘라내는 메소드이다.
- 배열은 바꿀 수 없기 때문에 새로운 배열인 int[]를 리턴한다
풀이는 같지만 스트림을 사용하는지, 배열을 사용하는지에 따라 다르게 쓸 수 있다.
1. 배열 이용
import java.util.Arrays;
class Solution {
public int[] solution(int[] num_list) {
Arrays.sort(num_list);
return Arrays.copyOfRange(num_list, 5, num_list.length);
}
}
러닝타임은 대략 0.5ms 이내로 나왔다.
2. 스트림 이용
스트림의 skip() 메소드를 이용했다.
skip은 인수로 받은 숫자만큼을 제외한 스트림을 리턴한다.
import java.util.*;
class Solution {
public int[] solution(int[] num_list) {
return Arrays.stream(num_list).sorted().skip(5).toArray();
}
}
러닝타임은 대략 6~7ms정도로 나왔다.
복잡한 코드가 아니라면 stream보다는 배열 자체를 활용하는게 좋을 거 같다!
'코딩테스트 > 프로그래머스 Lv.0' 카테고리의 다른 글
[프로그래머스] 두 수의 합 (BigInteger) - JAVA (0) | 2023.10.15 |
---|---|
[프로그래머스] 전국 대회 선발고사 (이차원 배열 정렬) - JAVA (0) | 2023.10.15 |
[프로그래머스] 무작위로 K개의 수 뽑기 (stream.distinct()) - JAVA (0) | 2023.10.14 |
[프로그래머스] 빈 배열에 추가, 삭제하기 (Stack) - JAVA (0) | 2023.10.14 |
[프로그래머스] 문자열 바꿔서 찾기 (str.contains) - JAVA (0) | 2023.10.13 |