[Programmers / Level1] 176963. 추억 점수(Java)

이하얀·2024년 7월 19일
0

🕊️ 프로그래머스

목록 보기
15/47

💡 Info




입출력 조건




입출력 예시





문제 이해


  • 인물 이름의 중복을 제외한 뒤, 각 값을 합산하면 되는 문제


알고리즘


풀이 시간 : 14분

  • 입력

    • 결과가 저장된 배열 answer 재정의하기
    • 합산할 값 sum 정의하기
  • 계산

    • 인물 이름이 중복되는 경우 (equals) -> sum에 yearning 합산
  • 출력

    • answer[i]를 sum에 담아 answer 반환
import java.util.*;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        
        //Arrays.stream(photo).distinct().toArray();
        
        int sum = 0;
        
        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])) {
                        sum += yearning[k];
                    }
                    else {
                        break;
                    }
                }
            }
            answer[i] = sum;
        }

        return answer;
    }
}


오답체크


  • 테스트 실패 문제 발생
    • 반복을 종료하는 break 타이밍을 if문으로 이동 + else문 삭제
    • sum의 선언 위치를 for문 안으로 이동 -> 그 밖에 선언할 경우 answer[i] = sum이 정상적으로 이뤄지지 않는 문제가 발생하는 것으로 보임.
//before
int sum = 0;
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])) {
				sum += yearning[k];
            }
            else {
            	break;
            }
        }
    }
//after
for(int i=0; i < photo.length; i++){

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


최종 풀이


풀이 시간 : 35분(첫 풀이 시간 포함)

  • 입력

    • 결과가 저장된 배열 answer 재정의하기
    • 합산할 값 sum 정의하기
  • 계산

    • 인물 이름이 중복되는 경우 (equals) -> sum에 yearning 합산
  • 출력

    • answer[i]를 sum에 담아 answer 반환
import java.util.*;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        
        //Arrays.stream(photo).distinct().toArray();
        
        //int sum = 0;
        
        for(int i=0; i < photo.length; i++){
            
            int sum = 0;
            
            for(int j=0; j < photo[i].length; j++){
                for(int k=0; k < name.length; k++){
                    if(photo[i][j].equals(name[k])) {
                        sum += yearning[k];
                        break;
                    }
                }
            }
            answer[i] = sum;
        }

        return answer;
    }
}


결과



profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE 개발 기록 노트☘️

0개의 댓글