Publish:

νƒœκ·Έ: , , , , ,

μΉ΄ν…Œκ³ λ¦¬:

img_3.png

문제

문제 링크

img_3.png img_4.png

μ„€λͺ…

ν‚€νŒ¨λ“œ 배열이 keymap 으둜 주어지고, μž…λ ₯ν•˜κ³ μž ν•˜λŠ” 값이 targets λ°°μ—΄λ‘œ μ£Όμ–΄μ§ˆ λ•Œ targets 에 λ“€μ–΄μžˆλŠ” 단어λ₯Ό μ™„μ„±ν•˜κΈ° μœ„ν•΄ ν‚€νŒ¨λ“œλ₯Ό 총 λͺ‡λ²ˆμ”© λˆŒλŸ¬μ•Ό ν•˜λŠ”μ§€ 각각 λˆ„μ  횟수λ₯Ό λ°˜ν™˜ν•˜λŠ” 문제

풀이

ν‚€νŒ¨λ“œλ₯Ό μ΅œμ†Œλ‘œ λˆŒλŸ¬μ•Όν•˜κΈ° λ•Œλ¬Έμ— 주어진 keymap μ „μ²΄μ—μ„œ μ€‘λ³΅λ˜λŠ” λ¬ΈμžλŠ” 인덱슀 λ²ˆν˜Έκ°€ 더 μž‘μ€ ν‚€νŒ¨λ“œλ₯Ό λˆŒλŸ¬μ•Ό ν•œλ‹€.

1
2
keymap = ["ABACD", "BCEFD"]
targets = ["ABCD"]

예λ₯Ό λ“€μ–΄ keymap κ³Ό targets 배열이 μœ„μ™€ κ°™μ„λ•Œ A κ°€ ν‚€νŒ¨λ“œ ν•˜λ‚˜μ— λ‘κ°œ λ“€μ–΄μžˆμ§€λ§Œ 처음 ν•œλ²ˆλ§Œ λˆ„λ₯΄λ©΄ λœλ‹€. 각 ν‚€νŒ¨λ“œμ˜ μˆœμ„œλ₯Ό μ €μž₯ν•  map 을 λ§Œλ“€μ–΄ 두고, keymap 의 λͺ¨λ“  ν•­λͺ©μ„ μˆœνšŒν•˜λ©΄μ„œ 쀑볡 λ¬Έμžμ— λŒ€ν•΄μ„  μˆœμ„œκ°€ 더 μž‘μ€ κ°’μœΌλ‘œ κ°±μ‹ μ‹œμΌœ μ€€λ‹€.

μ΄λ•Œ μˆœμ„œλŠ” 1λΆ€ν„° μ €μž₯ν•œλ‹€. 이제 문자 별 λˆŒλŸ¬μ•Ό ν•˜λŠ” μ΅œμ†Œ νšŸμˆ˜κ°€ map 에 λͺ¨λ‘ λ“€μ–΄μžˆκ²Œ λœλ‹€. map μ—μ„œ target 에 μžˆλŠ” 문자λ₯Ό μ°Ύμ•„μ„œ 카운트만 ν•΄μ£Όλ©΄ λœλ‹€.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        int[] answer = new int[targets.length];
        HashMap<Character, Integer> map = new HashMap<>();
        for (String s : keymap) {
          char[] charArray = s.toCharArray();
          for (int j = 0; j < charArray.length; j++) {
            char c = charArray[j];
            if (map.get(c) == null || map.get(c) > j) {
              map.put(c, j + 1);
            }
          }
        }

        for (int i = 0; i < targets.length; i++) {
          char[] charArray = targets[i].toCharArray();
          for (int j = 0; j < charArray.length; j++) {
            char c = charArray[j];
            if (map.containsKey(c)) {
              answer[i] += map.get(c);
            } else {
              answer[i] = -1;
              break;
            }
          }
        }
        return answer;
    }
}

img_3.png

λ°©λ¬Έν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€! λŒ“κΈ€,지적,ν”Όλ“œλ°± μ–Έμ œλ‚˜ ν™˜μ˜ν•©λ‹ˆλ‹€πŸ˜Š

λŒ“κΈ€λ‚¨κΈ°κΈ°