[프로그래머스] 대충 만든 자판(160586)

lhs's avatar
Dec 05, 2024
[프로그래머스] 대충 만든 자판(160586)
 

1. 문제 풀이 아이디어

  • 각 문자를 입력하는 데 필요한 최소 횟수를 배열에 저장하면 문제를 해결할 수 있다.

2. 나의 정답 코드

class Solution { public int[] solution(String[] keymap, String[] targets) { int[] answer = new int[targets.length]; int[] alphabet = new int[26]; for (String key : keymap) { int index = 1; for (char c : key.toCharArray()) { alphabet[c - 'A'] = alphabet[c - 'A'] == 0 ? index : Math.min(alphabet[c - 'A'], index); index++; } } for (int i = 0; i < targets.length; i++) { String target = targets[i]; int result = 0; for (char c : target.toCharArray()) { if (alphabet[c - 'A'] == 0) { result = -1; break; } result += alphabet[c - 'A']; } answer[i] = result; } return answer; } }

3. 정리

  • keymap에서 키를 읽어 각 문자를 alphabet 배열의 해당 위치에 저장한다. 배열의 값이 0이면 문자열에서의 위치를 저장하고, 값이 이미 있으면 더 작은 값을 저장한다.
  • targets 배열에서 각 target의 문자를 확인하여, alphabet 배열에서 값을 찾는다. 값이 0이면 결과값에 -1을 넣고 반복을 중단한다. 값이 0이 아니면 해당 값을 결과값에 더한다.
  • 계산한 결과값을 answer 배열에 저장하여 문제를 해결한다.
 
Share article

LHS's Study Space