728x90
https://school.programmers.co.kr/learn/courses/30/lessons/160586?language=java
1. Java
import java.util.*;
class Solution {
public int[] solution(String[] keymap, String[] targets) {
int[] answer = new int[targets.length];
HashMap<Character,Integer> map = new HashMap<>();
/* for ( int i = 0; i < keymap.length; ++i ) {
String str = keymap[i];
for ( int j = 0; j < str.length(); ++j ) {
char chr = str.charAt(j);
Integer num = map.get(chr);
if ( num == null || num > j+1 ) {
map.put(chr, j+1);
}
}
}
for ( int i = 0; i < targets.length; ++i ) {
String str = targets[i];
int ans = 0;
for ( int j = 0; j < str.length(); ++j ) {
char chr = str.charAt(j);
if ( map.containsKey(chr) ) {
ans += map.get(chr);
} else {
ans = -1;
break;
}
}
answer[i] = ans;
} */
for ( String str : keymap ) {
int idx = 0;
for ( char chr : str.toCharArray() ) {
idx++;
Integer num = map.get(chr);
if ( num == null || num > idx ) {
map.put(chr, idx);
}
}
}
int i = 0;
for ( String str : targets ) {
int cnt = 0;
for ( char chr : str.toCharArray() ) {
/* if ( map.containsKey(chr) ) {
cnt += map.get(chr);
} else {
cnt = -1;
break;
} */
Integer val = map.get(chr);
if ( val == null ) {
cnt = -1;
break;
} else {
cnt += map.get(chr);
}
}
answer[i++] = cnt;
}
return answer;
}
}
2. Python
def solution(keymap, targets):
answer = []
d = {}
for s in keymap :
# for j in range(len(s)) :
# c = s[j]
# n = d.get(c)
# if n == None or n > j+1 :
# d[c] = j+1
i = 0
for c in s :
i += 1
n = d.get(c)
if n == None or n > i :
d[c] = i
for s in targets :
a = 0
for c in s :
v = d.get(c)
if v == None :
a = -1
break
else :
a += v
answer.append(a)
return answer
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 프로그래머스 ( Programmers )' 카테고리의 다른 글
[프로그래머스(Programmers)][Java,Python] (Lv1) 숫자 짝꿍 (0) | 2025.03.18 |
---|---|
[프로그래머스(Programmers)][Java,Python] (Lv1) 이웃한 칸 (PCCE 기출문제 9번) (0) | 2025.03.18 |
[프로그래머스(Programmers)][Java,Python] (Lv1) 둘만의 암호 (0) | 2025.03.11 |
[프로그래머스(Programmers)][Java,Python] (Lv1) 문자열 나누기 (0) | 2025.03.11 |
[프로그래머스(Programmers)][Java,Python] (Lv1) 지폐 접기 (PCCE 기출문제 9번) (0) | 2025.03.11 |