Programmers

[Programmers : Java] - 추억 점수

u_SZero 2023. 11. 5. 14:09

문제 설명

 

 


문제 풀이 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