초코딩(chocoding)

[Programmers / java] 추억 점수 본문

[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