Notice
Recent Posts
Recent Comments
Link
반응형
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

붕어의 개발 기록

8월 14일 99클럽 항해 24일 본문

항해99(2024-07~08)/99클럽 하루 한문제

8월 14일 99클럽 항해 24일

은붕어_ 2024. 8. 14. 21:50
반응형

99클럽 항해 24일차

 

오늘의 문제는 대충 만든 자판이다.

문제에서 주어지는 keymap을 가지고 최소 키 입력을 도출해내는 문제이다.

맵에 keymap의 각 문자를 키로 하여 해당 키의 최소 입력수를 값으로 저장한다.

키맵을 순회하며 각 문자를 키로 저장하며, 키가 없을땐 현재 위치를 기본 값으로 저장하고, 키가 있다면 현재 키에 저장된 입력 값과 위치를 비교하여 작은 수를 저장한다.

targets을 순회하며 각 타겟에 키가 이미 존재하면 저장된 입력 값을 배열에 저장하고 없으면 -1을 리턴한다.

 

import java.util.HashMap;
import java.util.Map;

class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        int[] answer = new int[targets.length];
        Map<Character, Integer> map = new HashMap<>();

        for (String s : keymap) {
            for (int i = 0; i < s.length(); i++) {
                char key = s.charAt(i);
                int value = map.getOrDefault(key, i + 1);
                map.put(key, Math.min(value, i + 1));
            }
        }
        for (int i = 0; i < targets.length; i++) {
            for (int j = 0; j < targets[i].length(); j++) {
                char key = targets[i].charAt(j);
                if (map.containsKey(key)) {
                    answer[i] += map.get(key);
                } else {
                    answer[i] = -1;
                    break;
                }
            }
        }
        return answer;
    }
}

 

반응형