TIL

[코테연습] 2053. Kth Distinct String in an Array

크라00 2024. 8. 5. 21:35

- 배열 / 해시 문제

 

- 문제분석

1. 문자열 배열이 존재한다.

2. 해당 문자열 배열에서 중복되는 배열을 제외한 값 중에서 k 번째에 해당하는 문자열을 반환하고, 없을 경우 "" 을 반환하라.

 

- 문제풀이

1. 배열을 반복하면서 Map<String, Integer> 에 문자열을 counting 한다.

2. 다시 배열을 반복하면서 map 에 2 이상 카운팅되었을 때를 제외하고 , index 를 더하면서 k 번째의 문자를 구한다.

 

class Solution {
    public String kthDistinct(String[] arr, int k) {
        String result = "";

        Map<String, Integer> map = new HashMap<>();
        for(int i = 0; i < arr.length; i++) {
            map.put(arr[i], map.getOrDefault(arr[i], 0)+1);
        }

        int index = 0;
        for (int i = 0; i < arr.length; i++) {
            if (map.get(arr[i]) < 2) {
                index++;
            }
            if (index == k) {
                result = arr[i];
                break;
            }
        }

        return result;
    }
}