본문 바로가기
algorithm/Programmers

[JAVA] 추억점수

by 이쟝 2023. 4. 4.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


1.HashMap을 이용해서 풀기 

2.삼중 for문을 이용해서 풀기

 

1. 

import java.util.*;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        HashMap<String, Integer> hm = new HashMap<String, Integer>();
       
        for(int i=0;i<name.length;i++) {
            hm.put(name[i], yearning[i]);
        }
        
        for(int i=0;i<photo.length;i++) {
            for(int j=0;j<photo[i].length;j++) {
                if(hm.get(photo[i][j]) != null)   answer[i] += hm.get(photo[i][j]);
            }
        }
        
        return answer;
    }
}

 

  • name 크기 만큼 for문을 돌면서 hashmap안에 넣기
  • 이중 for문 만큼 돌면서 null이 아닐 때, hashmap에 있는 것을 answer 배열에 넣기
  • answer[i] += hm.get(photo[i][j]) 대신에 getOrDefault를 사용해서 가능!
    • answer[i] += hm.getOrDefault(photo[i][j], 0);

 

2. 다른 사람 풀이 (삼중 for문)

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        for(int i = 0; i < photo.length; i++){
            for(int j = 0; j < photo[i].length; j++){
                for(int k = 0; k < name.length; k++){
                    if(photo[i][j].equals(name[k])) answer[i] += yearning[k];
                }
            }
        }
        return answer;
    }
}

 

  • hashmap을 쓰는 게 훨씬 빠르긴 하다.
  • hashmap을 언제 쓸 때 빠를지 조금씩 감이 오는 것 같다.

'algorithm > Programmers' 카테고리의 다른 글

[JAVA] H-index  (0) 2023.04.04
[JAVA] 가장 큰 수  (0) 2023.04.04
[JAVA] K번째 수  (0) 2023.03.31
[JAVA] 올바른 괄호  (0) 2023.03.31
[JAVA] 기능 개발  (0) 2023.03.30