말하는 컴공감자의 텃밭

프로그래머스 추억점수 - 자바(java) HashMap 본문

알고리즘/Programmers - Java

프로그래머스 추억점수 - 자바(java) HashMap

현콩 2023. 5. 20. 15:26
728x90

프로그래머스 추억점수

Map 쓰는 문제를 찾다가 줍게된 문제이다.

name 갯수와 같은 yearning에 점수가 담겨있고, 해당 이름순번에 맞는 점수가 담겨있다.

photo에는 이름이 2차원 배열로 담겨있고, 이름을 점수로 변환하여 리턴하면 되는 문제이다.

 

for문 반복으로 풀수도 있지만 시간복잡도가 n^3이라 map을 사용하기로 했다.

 

이름 중복이 없어서 Hash는 굳이 안써도 되었지만 사용했다.

 

import java.util.*;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        HashMap <String,Integer> map = new HashMap<>(); // HashMap 선언 key엔 이름이므로 string
        
        for(int i = 0; i<name.length; i++){         // 반복문으로 map에 name과 yearning값 넣어주기
        map.put(name[i],yearning[i]);
        }
        
        for(int i = 0; i<photo.length; i++){         
            int score = 0;
            for(int j = 0; j<photo[i].length; j++){
                String names = photo[i][j];             // names 선언후 반복문으로
                if(map.containsKey(names)){        // map에 있는 names이라면
                    score +=map.get(names);          // score에 map.get으로 Value값을 더해준다.
                }
            answer[i] = score;                               // 결과 값 넣어주기.
            }
        }
        
        
        return answer;
    }
}

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.*;
 
class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        HashMap <String,Integer> map = new HashMap<>();
        
        for(int i = 0; i<name.length; i++){
        map.put(name[i],yearning[i]);
        }
        
        for(int i = 0; i<photo.length; i++){
            int score = 0;
            for(int j = 0; j<photo[i].length; j++){
                String names = photo[i][j];
                if(map.containsKey(names)){
                    score +=map.get(names);
                }
            answer[i] = score;
            }
        }
        
        
        return answer;
    }
}
cs

 

 

물론 간단하게 하나하나 비교하는 방식도 존재한다. 다만 속도가 굉장히 느린편편

프로그래머스 추억점수

 

프로그래머스 추억점수
기존map사용 코드
프로그래머스 추억점수
삼중 for문 코드

 

728x90
Comments