[Java] 알고리즘 문제풀이
[Programmers / java] 추억 점수
sweetychocoding
2023. 10. 3. 23:48
728x90
import java.util.Arrays;
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;
}
} // class Solution
public class Programmers_memoryScore {
public static void main(String[] args) {
String[] name = { "may", "kein", "kain", "radi" };
int[] yearning = { 5, 10, 1, 3 };
String[][] photo = { { "may", "kein", "kain", "radi" }
, { "may", "kein", "brin", "deny" }
, { "kon", "kain", "may", "coni" }
};
Solution sol = new Solution();
System.out.println(Arrays.toString(sol.solution(name, yearning, photo)));
}
}
처음 문제를 접근할 때, for문을 중첩해서 써야겠다라고 생각이 들었다.
문제를 다 풀고 스터디 그룹 팀원과 코드를 공유해보니 팀원은 HashMap 함수를 썼다.
HashMap 함수란
=> 키(key)와 값(value)을 묶어서 하나의 데이터(entry)로 저장한다는 특징을 갖는다. 그리고 해싱(hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 보인다.
HashMap은 키와 값을 각각 Object 타입으로 저장한다.
키(key) : 컬렉션 내의 키 중에서 유일해야 한다.
값(value) : 키와 달리 데이터의 중복을 허용한다.
다음은 HashMap 함수를 써서 변경한 코드이다.
package ex_codeUp;
import java.util.Arrays;
import java.util.HashMap;
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo) {
HashMap<String, Integer> hm = new HashMap<String, Integer>();
for (int i = 0; i < name.length; i++) {
hm.put(name[i], yearning[i]);
}
int[] answer = new int[photo.length];
for (int i = 0; i < photo.length; i++) {
for (int j = 0; j < photo[i].length; j++) {
if (hm.containsKey(photo[i][j])) {
answer[i] += hm.get(photo[i][j]);
} else {
answer[i] += 0;
}
}
}
return answer;
}
} // class Solution
public class Programmers_memoryScore {
public static void main(String[] args) {
String[] name = { "may", "kein", "kain", "radi" };
int[] yearning = { 5, 10, 1, 3 };
String[][] photo = { { "may", "kein", "kain", "radi" }
, { "may", "kein", "brin", "deny" }
, { "kon", "kain", "may", "coni" }
};
Solution sol = new Solution();
System.out.println(Arrays.toString(sol.solution(name, yearning, photo)));
}
}
... 난이도 급 상승으로 현타왔다...
솔직히 어려운 문제는 아닌데 HashMap을 이용할 생각을 못했다... 진짜 ... 1도 생각 안났음.... ㅠㅠ
슬프구만..............
728x90