728x90
99 Club 2기 | Java | Beginner
ℹ️ 2089. Find Target Indices After Sorting Array
🏷 관련 주제 : Array Binary Search Sorting
Easy

✔ Solution with Sorting & Loop
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
class Solution {
public List<Integer> targetIndices(int[] nums, int target) {
List<Integer> answer = new ArrayList<>();
Arrays.sort(nums);
for (int i = 0; i < nums.length; i++) {
if (nums[i] == target) {
answer.add(i);
} else if (!answer.isEmpty()) {
break;
}
}
return answer;
}
}
채점 결과

✔ Solution with Stream API
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public List<Integer> targetIndices(int[] nums, int target) {
Arrays.sort(nums);
List<Integer> answer = IntStream.range(0, nums.length).filter(i -> nums[i] == target).boxed().collect(Collectors.toList());
return answer;
}
}
채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍
📌 오늘 만난 문제 : 매개변수로 받은 정수 배열 nums를 오름차순 정렬한 후, 매개변수로 받은 target과 값이 같은 원소의 인덱스를 List<Integer> 타입 객체에 담아 반환하시오.
이 때, target과 같은 값의 원소가 존재하지 않으면 빈 List를 반환하시오.
풀이 방법
nums오름차순 정렬nums탐색하여target과 값이 같은 원소 찾기
- for문(반복문) 이용하기
- Stream API 이용하기
nums탐색 방법2 - 1.
target과 값이 같은 인덱스 반환할 List에 담기
(target과 값이 다른 원소가 나오기 전까지 반복)nums에서target과 같은 값을 갖는 원소의 인덱스를 담은 List 반환
반복문으로 문제를 풀면 어렵지 않은데
Stream API로 문제를 풀어보고 싶어서
- IntStream 이용하는 법
- int[] to List<Integer> 변환 방법
- int형을 Integer형으로 만드는 법
을 알아보았다.
Stream API는 코드가 2줄 정도밖에 되지 않아 정말 간단하게 작성할 수 있었다.
근데 코드가 짧다고 실행 속도도 빠른 건 아닌가보다
반복문으로 푼 코드가 실행 속도는 더 빨리 나왔다.
💬 무엇을 새롭게 알았는지
Stream API로 코드를 작성해 보았다.
📚 References(참고 자료)
🆙 Next Level
728x90