All Honey Tip

프로그래머스 – 대충 만든 자판 Java 풀이

프로그래머스 대충 만든 자판 Java 풀이에 대해 알아보겠습니다.



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

코딩테스트 연습 > 연습문제 > 대충 만든 자판

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

프로세스는 아래와 같습니다.

1. HashMap에 글자별로 필요 연타수가 가장 낮은 값을 넣습니다.
2. String의 문자마다 HashMap을 확인하며, 문자(Key)가 없다면 -1을, 있다면 cnt를 축적합니다.
3. String 한 덩이의 cnt가 완성되면 ArrayList에 add합니다.

import java.util.*;
class Solution {
    public ArrayList<Integer> solution(String[] keymap, String[] targets) {
        ArrayList<Integer> answer = new ArrayList<>();
        HashMap<Character, Integer> hm = new HashMap<>();

        // 해시 맵에 넣기
        for(String s: keymap) {
            for(int i = 0; i < s.length(); i++) {
                // 람다식 때문, effectively final. 
                // 람다식에서 참조하는 외부 지역 변수는 final 혹은 effectively final 이어야한다.
                final int currentIndex = i; 
                
                char input = s.charAt(i);
                
                // 값이 없거나, 해당 key의 value가 더 크면 i+1, 그게 아니면 그대로
                hm.compute(input, (k, v) -> (v == null || v > currentIndex + 1) ? currentIndex + 1 : v);
                
            }
        }
        
        for(String target : targets) {
            int cnt = 0;
            for(int i = 0; i < target.length(); i++) {
                char cmp = target.charAt(i);
                
                // 값이 없으면 바로 -1 후 break
                if(!hm.containsKey(cmp)) {
                    cnt = -1;
                    break;
                }
                
                // cnt에 연타 수 축적
                else
                    cnt += hm.get(cmp);
            }
            answer.add(cnt);
        }
        return answer;
    }
}
프로그래머스 - 대충 만든 자판 Java 풀이

개발자 면접 질문 – Java


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다