일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- toUpperCase
- map
- 코틀린기초
- 백준 2473번 세 용액 - java
- 프로그래머스 java
- HashMap
- replace()
- 백준 1541
- 백준 2467번 용액 자바 - 이분탐색
- Java
- dp
- 프로그래머스 자바
- StringBuilder
- 백준 14938번 서강그라운드
- 백준 1197번 최소 스패닝 트리 - java
- 백준 1647번 도시 분할 계획 - java
- ac 5430번
- 백준 1806번 부분합 java
- 프로그래머스
- mysql hy000 에러
- 최소 힙 1927
- append
- Stack
- HashSet
- StringTokenizer
- hash
- 백준 3190번
- kotlin
- 백준 1043번 거짓말 - java 분리 집합
- 18111번 마인크래프트 - java 구현
- Today
- Total
말하는 컴공감자의 텃밭
프로그래머스 추억점수 - 자바(java) HashMap 본문
Map 쓰는 문제를 찾다가 줍게된 문제이다.
name 갯수와 같은 yearning에 점수가 담겨있고, 해당 이름순번에 맞는 점수가 담겨있다.
photo에는 이름이 2차원 배열로 담겨있고, 이름을 점수로 변환하여 리턴하면 되는 문제이다.
for문 반복으로 풀수도 있지만 시간복잡도가 n^3이라 map을 사용하기로 했다.
이름 중복이 없어서 Hash는 굳이 안써도 되었지만 사용했다.
import java.util.*;
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo) {
int[] answer = new int[photo.length];
HashMap <String,Integer> map = new HashMap<>(); // HashMap 선언 key엔 이름이므로 string
for(int i = 0; i<name.length; i++){ // 반복문으로 map에 name과 yearning값 넣어주기
map.put(name[i],yearning[i]);
}
for(int i = 0; i<photo.length; i++){
int score = 0;
for(int j = 0; j<photo[i].length; j++){
String names = photo[i][j]; // names 선언후 반복문으로
if(map.containsKey(names)){ // map에 있는 names이라면
score +=map.get(names); // score에 map.get으로 Value값을 더해준다.
}
answer[i] = score; // 결과 값 넣어주기.
}
}
return answer;
}
}
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 | import java.util.*; class Solution { public int[] solution(String[] name, int[] yearning, String[][] photo) { int[] answer = new int[photo.length]; HashMap <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++){ int score = 0; for(int j = 0; j<photo[i].length; j++){ String names = photo[i][j]; if(map.containsKey(names)){ score +=map.get(names); } answer[i] = score; } } return answer; } } | cs |
물론 간단하게 하나하나 비교하는 방식도 존재한다. 다만 속도가 굉장히 느린편편
'알고리즘 > Programmers - Java' 카테고리의 다른 글
프로그래머스 최대값 만들기 - 자바(java) (0) | 2023.05.26 |
---|---|
프로그래머스 달리기 경주 <6점> - 자바(java) HashMap (0) | 2023.05.20 |
프로그래머스 개인정보 수집 유효기간 <4점> - 자바(java) ArrayList (0) | 2023.05.20 |
프로그래머스 구슬을 나누는 경우의 수 <7점> - 자바(java) 조합 Biginteger (1) | 2023.05.13 |
프로그래머스 코드처리하기 <6점> - 자바(java) StringBuilder, append, charAt (0) | 2023.05.13 |