Tiny Bunny
본문 바로가기
Java/프로그래머스

프로그래머스 Java - 추억 점수

by 내이름효주 2024. 5. 23.

  • 문제 해석
    • 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수
    • 그리워하는 사람의 이름을 담은 문자열 배열 name
      각 사람별 그리움 점수를 담은 정수 배열 yearning
      각 사진에 찍힌 인물의 이름을 담은 이차원 문자열 배열 photo
예시)
name - ["may", "kein", "kain", "radi"]	
yearning - [5, 10, 1, 3]	
photo - [["may", "kein", "kain", "radi"],["may", "kein", "brin", "deny"], ["kon", "kain", "may", "coni"]]	

→ [19, 15, 6]

 

  • 문제 풀이 생각
    • photo[i][j] → i는 사진의 갯수,  j는 사진에 포함된 인물의 갯수
    • 결과 배열크기는 사진의 갯수만큼!
    • r[i] → name 배열을 반복문으로 돌면서 해당하는 값의 위치를 찾고
      yearning 배열에서 위에서 찾은 배열의 위치와 같은 위치의 값을 찾아서
      r[0]에 넣어줘
  • 문제 풀이
public class App {

    public static void main(String[] args) {
        String[] name = {"kali", "mari", "don"};
        int[] yearning = {11,1,55};
        String[][] photo = {{"kali", "mari", "don"}, {"pony", "tom", "teddy"}, {"con", "mona", "don"}};

        int[] answer = calculateAnswer(name, yearning, photo);

        System.out.println(Arrays.toString(answer)); // 결과 출력
    }

    public static int[] calculateAnswer(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length]; // answer 배열 초기화

        for (int i = 0; i < photo.length; i++) {
            for (int j = 0; j < photo[i].length; j++) {
                for (int x = 0; x < name.length; x++) {
                    if (photo[i][j].equals(name[x])) {
                        answer[i] += yearning[x];
                    }
                }
            }
        }

        return answer; // answer 배열 반환
    }
}