Skipalong's tistory
240222 TIL - Programmers 추억점수 본문
이번주는 노로바이러스에 걸려서 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 |