[Study] 프로그래머스 lv.1 추억 점수 ( 66% )

ayboori·2023년 8월 10일
0

Java Study

목록 보기
25/34

문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/176963

input : 인물 (1차원 배열), 인물에 해당하는 추억 점수 (1차원 배열), 사진 (2차원 배열)
return : 각 사진 당 추억 점수
Requirement : input에서 주어진 인물이 아닐 경우 0점으로 계산

풀이 로직

  1. 인물 - 추억 점수를 map으로 저장
  2. map에 값 세팅
  3. map이 사진의 key 값을 가지고 있을 때 임시 변수에 + 연산
  4. 해당 루프 번째 배열의 추억 점수를 세팅

내가 작성한 풀이

import java.util.HashMap;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo){
    
        int[] answer = new int[photo.length];
        // 인물 - 추억 점수를 map으로 저장
        HashMap<String,Integer> memory = new HashMap<>();
        
        // map에 값 세팅
        for(int i = 0 ; i < name.length ; i++){
            memory.put(name[i], yearning[i]);
        }
        
        int j = 0; // answer 배열의 index
        for(String[] ph : photo){
            int temp = 0; // 현재 배열의 추억 점수를 저장할 변수
            for(int i = 0 ; i < ph.length ; i++){
                if(memory.containsKey(ph[i])){ // key 값을 가지고 있을 때 연산
                    temp += memory.get(ph[i]);        
                }
            }
            answer[j++] = temp; // 이번 배열의 추억 점수를 세팅
        }
        return answer;
    }
}

실행 시간

0.04 ~ 2.22ms

테스트 1 〉	통과 (0.04ms, 72MB)
테스트 2 〉	통과 (0.04ms, 75MB)
테스트 3 〉	통과 (0.17ms, 77MB)
테스트 4 〉	통과 (0.13ms, 76MB)
테스트 5 〉	통과 (0.38ms, 78.4MB)
테스트 6 〉	통과 (0.67ms, 83MB)
테스트 7 〉	통과 (0.75ms, 79.8MB)
테스트 8 〉	통과 (1.10ms, 92.6MB)
테스트 9 〉	통과 (0.76ms, 83.2MB)
테스트 10 〉	통과 (2.02ms, 87.4MB)
테스트 11 〉	통과 (2.22ms, 101MB)
테스트 12 〉	통과 (0.87ms, 89.5MB)
테스트 13 〉	통과 (0.09ms, 77.5MB)
테스트 14 〉	통과 (0.02ms, 67.5MB)

Trouble shooting

            for(int i = 0 ; i < ph.length ; i++){
                if(memory.containsKey(ph[i])){
                    temp += memory.get(ph[i]);        
                }
            }

위 부분에서 if(memory.containsKey(ph[i])) 조건을 걸지 않았을 경우 NullPointerException 에러가 발생한다.

찾아보니 hashmap.get() 연산의 경우 존재하지 않는 key값을 조회하려고 시도하면 null을 리턴한다. 이 부분에서 에러가 발생하는 것은 아니고, null 값을 temp에 더하려고 연산할 때 에러가 발생한다.

profile
프로 개발자가 되기 위해 뚜벅뚜벅.. 뚜벅초

0개의 댓글