[프로그래머스, 160586] 대충 만든 자판 (java)
Problem Solving/Programmers

[프로그래머스, 160586] 대충 만든 자판 (java)

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/160586

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

728x90

메모리: 91.5 MB, 시간: 2.39 ms

사용 알고리즘: 자료구조, 문자열

import java.util.*;

class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        
        HashMap<Character, Integer> km = new HashMap<>();
        
        // 각 키별로 가장 적게 누를 수 있는 횟수 저장
        String key; char k;
        for(int i = 0; i < keymap.length; i++) {
            key = keymap[i];
            for(int j = 0; j < key.length(); j++) {
                k = key.charAt(j);
                if(km.get(k) == null || km.get(k) > j + 1)
                    km.put(k, j + 1);
            }
        }
        
        int[] answer = new int[targets.length];
        
        for(int i = 0; i < targets.length; i++) {
            key = targets[i];
            for(int j = 0; j < key.length(); j++) {
                k = key.charAt(j);
                if(km.get(k) == null) {
                    answer[i] = -1;
                    break;
                }
                else answer[i] += km.get(k);
            }
        }
        
        return answer;
    }
}
728x90