[프로그래머스] Lv.1 추억 점수 JAVA 풀이
문제 Lv.1 추억 점수
: 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수 매기기
: name은 그리워 하는 사람 이름 (문자열 배열)
yearning은 그리움 점수 (정수 배열)
photo는 사진에 찍힌 이름 (2차원 문자열 배열)
(예시)
name | 그리운 사람 [ 수지, 짱구, 유리, 영희 ] |
yearning | 점수 [ 5, 10, 1, 3 ] |
photo | 사진에 찍힌 사람 # 1 [ 철수 - 짱구 - 맹구 - 훈이 ] # 2 [ 수지 - 짱구 - 유리 - 영희 ] # 3 [ 영희 - 짱구 - 맹구 - 훈이 ] |
최종 결과 | 그리움 점수 [ 10, 19, 13 ] |
<2차원 배열>
arr [ A ] [ B ]
- A = 행
- B = 열
- 표현식 = { 열 개수만큼 . . .}
{ 열 개수만큼 . . .}
:
행 개수만큼
:
(Ex) arr [3][2] 라면 열 = 3, 행 = 2 | |
{6, 3}, | |
{4, 1}, | |
{3, 2} |
<Map>
: 키(Key)와 값(Value) 두 쌍으로 데이터를 보관하는 자료구조
: 키는 맵에 오직 유일하다(같은 맵에 중복 X)
값(value)은 중복돼도 OK
<HashMap>
: 해싱된 맵
: 비슷하게는 Hashtable이 있다
두 개의 차이점 - Thread 관점에서의 안전한 것은 Hashtable
- 안전하지는 않지만 속도가 빠른 HashMap
[코드]
import java.util.*;
class Solution{
public int[] solution(String[] name, int[] yearning, String[][] photo) {
int[] score = new int[photo.length];
Map<String,Integer> m = new HashMap<>();
for(int i=0; i< name.length; i++){
m.put(name[i], yearning[i]);
}
for(int i=0; i< photo.length; i++){
for(int j=0; j<photo[i].length; j++){
score[i] += m.getOrDefault(photo[i][j], 0);
}
}
return score;
}
}
[해석]
for(int i=0; i< photo.length; i++){ for(int j=0; j<photo[i].length; j++){ score[i] += m.getOrDefault(photo[i][j], 0); } } return score; } }
: public int[] solution(String[] name, int[] yearning, String[][] photo) 메서드 안에서 사용할 매개변수 선언
: int[] score = new int[photo.length]; photo 맨 나중에 행의 개수만큼 출력할 score 만들기
: Map<String, Integer> m = new HashMap<>(); 맵 m을 선언 (Key = 그리운 이름, Value = 그리움 점수)
: for(int i = 0; i<name.length;i++){ 그리워하는 이름만큼 반복하기
m.put(name[i], yearning[i]); 그리운 사람들 이름과 그리움 점수를 맵에 넣는다
}
: for(int i=0; i< photo.length; i++){ photo의 행 만큼 반복한다
for(int j=0; j<photo[i].length;i++){ 반복되는 i번째 행 안에서 열 만큼 반복한다
score[i] += m.getOrDefault(photo[i][j], 0); score도 행끼리 계산해서 출력한다
} 맵에서 photo[i][j]의 값과 같은 key(그리운 이름)를 찾으면
해당key의 value(점수)를 score에 더해주고 못찾으면 0점 처리
: return score; 최종 선수들 호출
https://school.programmers.co.kr/learn/courses/30/lessons/176963
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
* 독학으로 익히는 코딩이라 틀린 것이 있을 수 있습니다. 오류가 있다면 댓글을 통해 알려주세요. 감사합니다. *