728x90
반응형
https://github.com/ROUTINE-STUDY/Algorithm
알고리즘 스터디를 진행하고 있습니다. 😊
초보들로 구성되어 있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/160586
문제 설명
풀이 방법
Map을 활용하여 각 자판의 글자(key)를 최소한으로 만들 수 있는 수(Value)를 담아 사용하고자 했다.
내 코드(JAVA)
public int[] solution(String[] keymap, String[] targets) {
int[] answer = new int[targets.length];
Map<Character, Integer> minKeyMap = new HashMap<>();
// keymap을 역순으로 돌아, Map에 각 키(Key)를 최소한으로 나타낼 수 있는 개수(Value)를 저장해두고 사용한다.
for (String key : keymap) {
char[] chars = key.toCharArray();
for (int j = chars.length - 1; j >= 0; j--) {
int value = minKeyMap.get(chars[j]) == null ? Integer.MAX_VALUE : minKeyMap.get(chars[j]);
minKeyMap.put(chars[j], Math.min(value, j + 1));
}
}
for (int i = 0; i < targets.length; i++) {
int count = 0;
for (char ch : targets[i].toCharArray()) {
Integer getVal = minKeyMap.get(ch);
// target을 만들 수 없을 경우 -1을 저장하고 break
if (getVal == null) {
count = -1;
break;
}
count += getVal;
}
answer[i] = count;
}
return answer;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/JAVA] 크기가 작은 부분문자열 (1) | 2023.11.14 |
---|---|
[프로그래머스/JAVA] 둘만의 암호 (1) | 2023.11.12 |
[프로그래머스/JAVA] 햄버거 만들기 (1) | 2023.11.11 |
[프로그래머스/JAVA] 달리기 경주 (0) | 2023.11.08 |
[프로그래머스/JAVA] 개인정보 수집 유효기간 (0) | 2023.08.04 |
댓글