프로그래머스 대충 만든 자판 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; } }
결과

답글 남기기