문제 설명
문제 풀이 1차
import java.util.*;
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo) {
int[] answer = new int[photo.length];
String[] temp = {};
for(int i=0; i<photo.length; i++)
{
temp = photo[i];
int tmp = 0;
for (int j = 0; j < temp.length; j++)
{
if((Arrays.asList(name).indexOf(temp[j]) >= 0)
&& (Arrays.asList(name).indexOf(temp[j]) <= yearning.length))
{
tmp += yearning[Arrays.asList(name).indexOf(temp[j])];
}
}
answer[i] = tmp;
}
return answer;
}
}
1차 시도만에 제출을 완료하긴 했지만다른 분들이 푸신 문제를 보니 확실히 HashMap을 사용하는 것이시간 복잡도를 해결하는 것에 최적화인 것 같다.HashMap을 활용하는 능력이 부족했는데이 기회에 HashMap과 친해져야겠다...
문제 풀이 2차
HashMap 사용
import java.util.*;
class Solution {
public static int[] solution(String[] name, int[] yearning, String[][] photo) {
int[] answer = new int[photo.length];
HashMap<String, Integer> hashSet = new HashMap<>();
for (int i = 0; i < name.length; i++)
{
hashSet.put(name[i], yearning[i]);
}
for (int i = 0; i < photo.length; i++)
{
int tmpSum = 0;
String[] temp = photo[i];
for (int j = 0; j < temp.length; j++)
{
if(hashSet.get(temp[j]) != null)
tmpSum += hashSet.get(temp[j]);
}
answer[i] = tmpSum;
}
return answer;
}
}
조금씩 HashMap에 능숙해져가는 것 같다!
여기서 이제 코드를 더 간결하게 만들 방법을 찾아보고 싶다.
'Programmers' 카테고리의 다른 글
[Programmers : Java] - 공원산책 (4) | 2023.11.21 |
---|---|
[Programmers : Java] - 덧칠하기 (0) | 2023.11.05 |
[Programmers : Java] - 달리기 경주 (0) | 2023.11.02 |