[LeetCode] Relative Sort Array

아르당·2026년 4월 3일

LeetCode

목록 보기
239/261
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

두 배열 arr1과 arr2가 주어졌을 때, arr2의 요소는 서로 다르고, arr2의 모든 요소는 arr1에 있다.
arr1의 요소를 arr2의 요소와 상대적인 순서가 같도록 정렬해라. arr2에 없는 요소는 arr1 맨 끝에 오름차순으로 배치한다.

Example

#1
Input: arr1 = [2, 3, 1, 3, 2, 4, 6, 7, 9, 2, 19], arr2 = [2, 1, 4, 3, 9, 6]
Output: [2, 2, 2, 1, 4, 3, 3, 9, 6, 7, 19]

#2
Input: arr1 = [28, 6, 22, 8, 44, 17], arr2 = [22, 28, 8, 6]
Output: [22, 28, 8, 6, 17, 44]

Constraints

  • 1 <= arr1.length, arr2.length <= 1000
  • 0 <= arr1[i], arr2[i] <= 1000
  • arr2의 모든 요소는 서로 다르다.
  • 각 arr2[i]는 arr1에 있다.

Solved

class Solution {
    public int[] relativeSortArray(int[] arr1, int[] arr2) {
        List<Integer> result = new ArrayList<>();

        for(int i = 0; i < arr2.length; i++){
            for(int j = 0; j < arr1.length; j++){
                if(arr1[j] == arr2[i]){
                    result.add(arr1[j]);
                    arr1[j] = -1;
                }
            }
        }

        Arrays.sort(arr1);

        for(int i = 0; i < arr1.length; i++){
            if(arr1[i] != -1){
                result.add(arr1[i]);
            }
        }

        return result.stream().mapToInt(Integer::intValue).toArray();
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글