๋ฌธ์ ) ๋์ถฉ๋ง๋ ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/160586
keymap์ ์ํ ๊ท์น์ด, targets์ ์ณ์ผํ๋ String๊ฐ๋ค์ด ๋ค์ด์จ๋ค.
์ด๊ฒ์ ์ต์ํ์ ์ณ์ ๋ช ๋ฒ๋ง์ targets์ ์น ์ ์๋์ง ๋ฐํํ๋ค (์น ์ ์๋ ๊ฒฝ์ฐ -1๋ฐํ)
๋์ ๊ฒฝ์ฐ ํด๋น ๋ฌธ์ ๋ฅผ ๋ณด์๋ง์ ๋ฐฐ์ด์ A~Z๊น์ง ์ต์ ๋ช ๋ฒ ๋ง์ ๋๋ฌํ๋์ง ์ ์ฅ ํ ๋ค alphabetCount๋ฐฐ์ด์ ๋ฏธ๋ฆฌ ์ ์ฅํ๋ค,
target์์ ๊ทธ ๋ฐฐ์ด๊ฐ์ ๋ณด๋ฉฐ ์ ๊ทผํ๋ ๊ฒ์ด ๋น ๋ฅด๊ฒ ๋ค๊ณ ์๊ฐํ์ฌ ๊ทธ๋ ๊ฒ ์ฝ๋๋ฅผ ์ง๊ฒ ๋์๋ค.
๊ทธ ๊ฒฐ๊ณผ ์ฑ๊ณต์ ์ผ๋ก ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์งค ์ ์์๋ค.
class Solution {
public int[] solution(String[] keymap, String[] targets) {
int[] answer = new int[targets.length];
int[] alphabetCount = new int[26];
// keymap์ ๋ํ alphabetCount ๋ฐฐ์ด์ ๋ฏธ๋ฆฌ ์์ฑํ์ฌ
// ๊ฐ ์ํ๋ฒณ ๋ง๋ค ์ต์์ ๊ฒฝ์ฐ๋ก ๋๋ฌํ๋ ์๋ฅผ ์ ์ฅํด ๋๋๋ค.
for(int k = 0; k < keymap.length; k++){
String s = keymap[k];
for(int i = 0; i < s.length(); i++){
int location = (int) s.charAt(i) - 65;
if(alphabetCount[location] == 0
|| alphabetCount[location] > i + 1){
alphabetCount[location] = i + 1;
}
}
}
// targets๋ฐฐ์ด์ ์ด์คfor๋ฌธ์ ๋๋ ค alphabetCount์์ ๋ฐ๋ก ๊ฐ์ ๊บผ๋ด์ sum์ ๋ค ๋ํ๋ค.
for(int i=0; i<targets.length; i++){
int sum = 0;
for(int j=0; j<targets[i].length(); j++){
// 0์ธ ๊ฒฝ์ฐ๋ ์ํ๋ฒณ์ด keymap์ ์๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก ์๋์ ๊ฐ์ด ์ฒ๋ฆฌํ๋ค.
if(alphabetCount[(int) targets[i].charAt(j) - 65] == 0){
sum = -1;
break;
}
sum += alphabetCount[(int) targets[i].charAt(j) - 65];
}
answer[i] = sum;
}
return answer;
}
}
'์๊ณ ๋ฆฌ์ฆ > ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค) ์ฑ๊ฒฝ ์ ํ ๊ฒ์ฌํ๊ธฐ (0) | 2025.02.18 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค) ํ๋ฒ๊ฑฐ ๋ง๋ค๊ธฐ (0) | 2025.02.17 |
๋ฐฑ์ค 15711๋ฒ - ํ์์ ์ง๊ฟ java ๋ฌธ์ ํ์ด (0) | 2024.11.21 |
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด์ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ญ or ๋ก์ปฌ ๋ณ์ ์ ์ธ ์ฐจ์ด (0) | 2024.10.25 |
๋ฐฑ์ค ๊ธธ๋ผ์ก์ด (1-4) ๊ธฐ์ด์๋ฃ๊ตฌ์กฐ(2) ๋ฌธ์ ํ์ด (0) | 2024.09.04 |