250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 개발자
- SpringBoot
- 소셜로그인구현
- 자바개발자
- db
- 백엔드
- 코드업
- 백엔드개발자
- 미라클모닝
- 운영체제
- Java
- 리액트
- 프로그래머
- 프로그래머스
- 알고리즘
- 개발자일기
- 국비지원
- 스프링부트
- 코딩
- 자바스크립트
- 프로그래밍
- 자바알고리즘
- 자바의정석
- Codeup
- 데이터베이스
- 혼공컴운
- 프로세스
- 국비지원코딩
- React
- 자바
Archives
- Today
- Total
초코딩(chocoding)
[Programmers / java] 추억 점수 본문
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
'[Java] 알고리즘 문제풀이' 카테고리의 다른 글
[Programmers / java] 문자열 나누기 (0) | 2024.04.17 |
---|---|
[Programmers / java] 폰켓몬 (0) | 2024.04.17 |
[CodeUp / java] 1180 : 만능 휴지통 (0) | 2023.09.24 |
[CodeUp / java] 1371 : 마름모 출력하기 (0) | 2023.09.21 |
[CodeUp / java] [기초-배열연습] 2차원 배열 달팽이 채우기 4-1 (0) | 2023.09.10 |