프로그래머스 - 대충 만든 자판

youngkyu MIn·2023년 12월 18일
0

문제링크 - 프로그래머스 - 대충 만든 자판

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 (int i = 0; i < keymap.length; i++) {
            for (int j = 0; j < keymap[i].length(); j++) {
                char c = keymap[i].charAt(j);
                map.put(c, Math.min(map.getOrDefault(c, Integer.MAX_VALUE), j + 1));
            }
        }

        for (int i = 0; i < targets.length; i++) {
            String target = targets[i];
            int answerValue = 0;

            for (int j = 0; j < target.length(); j++) {
                char c = target.charAt(j);
                if (map.containsKey(c)) {
                    answerValue += map.get(c);
                } else {
                    answerValue = -1;
                    break;
                }
            }

            answer[i] = answerValue;
        }

        return answer;
    }
}

keymap 순회하여 각 문자를 누르기 위한 최소값들을 map 에 해쉬함.

targets 순회하며 각 문자에 대해 map 을 조회하여 값을 취합.


알게 된 Map 의 Method


map.putIfAbsent(key, value);

map 에 key 없을때만 추가함. 즉, 기존에 key 가 있다면 덮어쓰지 않음.


map.getOrDefault(key, defaultValue);

map 에 key 없을때 default value 걸어주는거 if 안쓸 수 있음.

profile
한 줄 소개

0개의 댓글

관련 채용 정보