Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Skipalong's tistory

240222 TIL - Programmers 추억점수 본문

TIL

240222 TIL - Programmers 추억점수

Skipalong 2024. 2. 23. 01:08

이번주는 노로바이러스에 걸려서 TIL 도 못쓰고 내내 몸져누워있었다.

오늘부터는 몸이 좀 나아져서 팀원들과 스터디를 재개했는데 알고리즘 풀이를 시작하였다. 오늘 푼 문제 중에 프로그래머스 추억점수라는 문제가 있었다. https://school.programmers.co.kr/learn/courses/30/lessons/138476

 

이 전에는

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;
    }
}

이런식으로 삼중for문을 사용해서

이런 결과가 나왔었는데 이전에 풀 당시에는 Map에 대한 이해가 전혀 없었어서 이런식으로 풀이를 했지만

이번에 다시 보니 Map을 사용해서 풀면 효율적으로 풀이를 할 수 있을 것 같았다.

그래서 다시 풀이를 해 보았을 때는

import java.util.*;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        Map<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++) {
            for(int j=0; j<photo[i].length; j++) {
                if(map.containsKey(photo[i][j])) {
                    answer[i] += map.get(photo[i][j]);
                }
            }
        }
        return answer;
    }
}

이런식으로 map을 사용해서 풀이를 해 보았다.

그리고 채점결과를 보았을 때

이렇게 훨씬 빨라진 처리속도를 볼 수 있었다. 아직 Collection자료구조에 대한 이해가 깊지는 않지만 이런식으로 익숙해지면

알고리즘테스트와 실제코드에 적용을 통해 성능개선에 많은 도움이 될 것 같고 팀원들과 코드 리뷰를 통해 많은 성장을 할 수 있을 것 같다.

'TIL' 카테고리의 다른 글

240226 TIL - 팩토리 패턴  (1) 2024.02.27
240223 TIL - 귤고르기  (0) 2024.02.24
240216 TIL - redis  (0) 2024.02.17
240215 TIL - RDBMS의 정규화  (0) 2024.02.16
240214 TIL - 대용량트래픽 처리법  (0) 2024.02.15