[LeetCode] Minimum Index Sum of Two Lists

아르당·2일 전

LeetCode

목록 보기
132/134
post-thumbnail

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

Problem

두 개의 문자열 배열 list1과 list2가 주어졌을 때, 인덱스 합이 가장 작은 공통 문자열을 찾아라.

공통 문자열은 list1과 list2 모두에 나타난 문자열이다.

인덱스 합이 가장 작은 공통 문자열은 list1[i]와 list2[j]에 모두 나타났을 때, i + j가 다른 모든 공통 문자열 중에서 최소값이 되어야 하는 공통 문자열이다.

인덱스 합이 가장 작은 공통 문자열을 모두 반환해라. 순서는 상관없다.

Example

#1
Input: list1 = ["Shogun", "Tapioca Express", "Burger King", "KFC"], list2 = ["Piatti", "The Grill at Torrey Pines", "Hungry Hunter Steakhouse", "Shogun"]
Output: ["Shogun"]
Explanation: 오직 공통된 문자열은 "Shogun"이다.

#2
Input: list1 = ["Shogun", "Tapioca Express", "Burger King", "KFC"], list2 = ["KFC", "Shogun", "Burger King"]
Output: ["Shogun"]
Explanation: 인덱스 합이 가장 작은 공통된 문자열은 인덱스 합이 sum = (0 + 1) = 1인 "Shogun"이다.

#3
Input: list1 = ["happy", "sad", "good"], list2 = ["sad", "happy", "good"]
Output: ["sad", "happy"]
Explanation: 공통된 문자열은 세 개가 있다.
"happy"의 인덱스 합은 sum = (0 + 1) = 1이다.
"sad"의 인덱스 합은 sum = (1 + 0) = 1이다.
"good"의 인덱스 합은 sum = (2 + 2) = 4이다.
인덱스 합이 가장 작은 공통된 문자열은 "sad"와 "happy"이다.

Constraints

  • 1 <= list1.length, list2.length <= 1000
  • 1 <= list1[i].length, list2[i].length <= 30
  • list1[i]와 list2[i]는 공백 ' '과 영문자로 구성된다.
  • list1의 모든 문자열은 고유하다.
  • list2의 모든 문자열은 고유하다.
  • list1과 list2에는 적어도 하나의 공통된 문자열이 있다.

Solved

class Solution {
    public String[] findRestaurant(String[] list1, String[] list2) {
        Map<String, Integer> map = new HashMap<>();
        List<String> result = new ArrayList<>();
        int sum = Integer.MAX_VALUE;

        for(int i = 0; i < list1.length; i++){
            map.put(list1[i], i);
        }

        for(int i = 0; i < list2.length; i++){
            Integer j = map.get(list2[i]);

            if(j != null && i + j <= sum){
                if(i + j < sum){
                    result.clear();
                    sum = i + j;
                }

                result.add(list2[i]);
            }
        }

        return result.toArray(new String[result.size()]);
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글