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

답글 남기기