본문 바로가기
Language/Java

[LeetCode | Java | Array, Sorting 문제 풀이] 2089. Find Target Indices After Sorting Array - Solution with Loop 또는 Stream API

by ㅇ달빛천사ㅇ 2024. 6. 21.
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를 반환하시오.


풀이 방법

  1. nums 오름차순 정렬
  2. nums 탐색하여 target과 값이 같은 원소 찾기
      nums 탐색 방법
    •   for문(반복문) 이용하기
    •   Stream API 이용하기
    • 2 - 1. target과 값이 같은 인덱스 반환할 List에 담기
      (target과 값이 다른 원소가 나오기 전까지 반복)

  3. nums에서 target과 같은 값을 갖는 원소의 인덱스를 담은 List 반환

반복문으로 문제를 풀면 어렵지 않은데
Stream API로 문제를 풀어보고 싶어서

  • IntStream 이용하는 법
  • int[] to List<Integer> 변환 방법
  • int형을 Integer형으로 만드는 법

을 알아보았다.


Stream API는 코드가 2줄 정도밖에 되지 않아 정말 간단하게 작성할 수 있었다.
근데 코드가 짧다고 실행 속도도 빠른 건 아닌가보다
반복문으로 푼 코드가 실행 속도는 더 빨리 나왔다.



💬 무엇을 새롭게 알았는지

Stream API로 코드를 작성해 보았다.



📚 References(참고 자료)


🆙 Next Level

728x90


Top