728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/176963
생각
- 해시를 사용하니 생각보다 쉽게 풀린 문제.
- 수도코드를 작성하였고 그대로 풀이하여 그대로 풀렸던 무난한 문제이다.
- 내가 생각했던 수도코드
hashmap = put.(name[i],yearning[i])
for photo
int tmp_result = 0;
for photo_el
tmp_result += map.get(name[i])
result = new int [photo.length];
코드
import java.util.*;
public class Main {
public static void main(String[] args) {
System.out.println(solution(new String[] {"may", "kein", "kain", "radi"},new int[]{5, 10, 1, 3},new String[][]{{"may", "kein", "kain", "radi"},{"may", "kein", "brin", "deny"}, {"kon", "kain", "may", "coni"}}));
System.out.println(solution(new String[] {"kali", "mari", "don"},new int[]{11, 1, 55},new String[][]{{"kali", "mari", "don"}, {"pony", "tom", "teddy"}, {"con", "mona", "don"}}));
}
public static int[] solution(String[] name, int[] yearning, String[][] photo) {
int[] answer = {};
// 1. hashmap = put.(name[i],yearning[i])
HashMap<String,Integer> hashMap = new HashMap<>();
for (int i = 0; i < name.length; i++) {
hashMap.put(name[i],yearning[i]);
}
answer = new int [photo.length];
// 2. for photo
for (int i = 0; i < photo.length; i++) {
int tmp_result = 0;
// 2.1 for photo_el
for (int j = 0; j < photo[i].length; j++) {
tmp_result += hashMap.getOrDefault(photo[i][j],0);
}
answer[i] = tmp_result;
}
return answer;
}
}
다른 사람 코드
- 문제를 단순히 푸는 것이 중요한게 아니라, 실무자 입장에서 바로 이해할 수 있는 코드를 짯는가가 중요한 포인트인 것 같다. 조금 더 가산점을 받기위한 다른사람의 깔끔한 코드를 첨부한다.
import java.util.*;
public class Main {
public static void main(String[] args) {
System.out.println(solution(new String[] {"may", "kein", "kain", "radi"},new int[]{5, 10, 1, 3},new String[][]{{"may", "kein", "kain", "radi"},{"may", "kein", "brin", "deny"}, {"kon", "kain", "may", "coni"}}));
System.out.println(solution(new String[] {"kali", "mari", "don"},new int[]{11, 1, 55},new String[][]{{"kali", "mari", "don"}, {"pony", "tom", "teddy"}, {"con", "mona", "don"}}));
}
public static int[] solution(String[] name, int[] yearning, String[][] photo) {
int[] answer = new int[photo.length];
HashMap<String,Integer> map = new LinkedHashMap<>();
for(int i=0; i< name.length; i++){
map.put(name[i],yearning[i]);
}
for(int i =0; i< photo.length;i++){
String[] persons = photo[i];
int score = 0;
for(int j=0; j<persons.length; j++){
String person = persons[j];
if(map.containsKey(person)){
score+=map.get(person);
}
}
answer[i]=score;
}
return answer;
}
}
728x90
반응형
'Dev > Algorithm' 카테고리의 다른 글
[프로그래머스] 바탕화면 정리 - Java (0) | 2024.05.20 |
---|---|
[프로그래머스] 공원 산책 - Java (0) | 2024.05.20 |
[프로그래머스] 달리기 경주 (0) | 2024.05.18 |
[프로그래머스] 데이터 분석 (0) | 2024.05.18 |
[프로그래머스] 이웃한 칸 (0) | 2024.05.18 |