개?발/프로그래머스

추억점수(Java)

YUEIC 2024. 5. 13. 18:10

 

    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = {};
        
        int[] photoScore = new int[photo.length];       //사진별 추억점수를 저장

        List<String> nameList = Arrays.asList(name);    //이름이 담긴 배열을 리스트로 변환

        for(int i = 0 ; i < photo.length ; i++){        //사진의 개수만큼 반복
            for(int j = 0 ; j < photo[i].length ; j++){ //사진속 사람수만큼 반복
                if(nameList.contains(photo[i][j])){     //만약 사진속 사람의 이름이 추억점수 리스트에 있다면
                    int id = nameList.indexOf(photo[i][j]); //그 사람의 순번을 가져와서
                    photoScore[i] += yearning[id];      //추억점수 리스트의 순번에 저장된 값을 추억점수에 더한다
                }
            }
        }

        answer = photoScore ;

        return answer;
    }

 

사진속 사람의 추억점수를 각각 더해서 출력하는 문제다

사진속에 사람이 추억점수를 갖고 있지 않은 경우도 있으니 조심할 것

 

사람이름을 검색하는데 배열 전체를 탐색하는 코드보다는 리스트에서 검색하는게 더 간결하다고 생각되어 다음과 같은 처리를 반복했다.

 

1.사람이름을 리스트로 만든다.

2.리스트에 사람이름이 있는지 없는지 확인한다.

3.있다면 그사람이 몇번째 순서인지 값을 가져온다.(네번째라면 추억점수 배열의 네번째 요소가 그사람의 점수이기때문)

4.그 값을 사진속 추억 점수에 더한다.

 

 

 

'개?발 > 프로그래머스' 카테고리의 다른 글

붕대감기 (java)  (0) 2024.05.21
요격 시스템 (C#)  (0) 2024.05.13
프로세스 (C#)  (0) 2024.05.03
소수만들기 (C#)  (1) 2024.05.01
문자열 내림차순으로 배치하기 (C#)  (0) 2024.05.01