https://school.programmers.co.kr/learn/courses/30/lessons/160586
import java.util.*;
class Solution {
public int[] solution(String[] keymap, String[] targets) {
int[] answer = new int[targets.length];
Map<Character, Integer> pressCount = new HashMap<>(); // key: ๋ฌธ์, value: ์ต์ ์
๋ ฅ ํ์
for (String key : keymap) { // ๊ฐ ๋ฌธ์๋ฅผ ์
๋ ฅํ๊ธฐ ์ํด ํค๋ฅผ ๋๋ฅด๋ ์ต์ ํ์๋ฅผ ๋งต์ ์ ์ฅ
for (int i = 0; i < key.length(); i++) {
char ch = key.charAt(i);
if (!pressCount.containsKey(ch)) {
pressCount.put(ch, i + 1); // pressCount์ ํด๋น ๋ฌธ์๊ฐ ์์ผ๋ฉด ์๋ก ์ถ๊ฐ
continue;
}
if (pressCount.get(ch) > i) {
pressCount.replace(ch, i + 1); // ์ด๋ฏธ ์์ผ๋ฉด ์
๋ ฅ ํ์๋ฅผ ๋น๊ตํ์ฌ ๋ ์ ๊ฒ ๋๋ฅด๋ ํ์๋ฅผ ์ ์ฅ
}
}
}
for (int i = 0; i < targets.length; i++) { // ๊ฐ ๋ฌธ์์ด์ ๋ง๋ค๊ธฐ ์ํ ์ต์ ํ์๋ฅผ ๊ณ์ฐํ์ฌ answer์ ์ ์ฅ
int sumTotal = 0;
for (int j = 0; j < targets[i].length(); j++) {
char ch = targets[i].charAt(j);
if (!pressCount.containsKey(ch)) { // ํด๋น ๋ฌธ์๊ฐ ์ด๋์๋ ์กด์ฌํ์ง ์์ผ๋ฉด -1์ ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ์ฅ
sumTotal = -1;
break;
}
sumTotal += pressCount.get(ch); // ๊ทธ๋ ์ง ์๋ค๋ฉด, ํด๋น ๋ฌธ์์ ์
๋ ฅ ํ์๋ฅผ sumTotal์ ๋ํด์ค
}
answer[i] = sumTotal;
}
return answer;
}
}