Algorithm/Implementation

[Baekjoon 13717 / Java / 실버5] 포켓몬 GO

양선규 2024. 5. 14. 12:14
728x90
반응형

문제
테스트 케이스

 

 

N : 포켓몬 종류 개수

P : 포켓몬

M : P 포켓몬에 대한 총 사탕 개수

K : P 포켓몬을 진화시키기 위해 필요한 사탕 개수

 

 

포켓몬을 진화시키면 2개의 사탕을 추가로 받게 된다.

모든 포켓몬을 총 몇 번 진화시켰는지, 그리고 가장 많이 진화한 포켓몬의 이름을 출력하면 된다.

 

총 진화횟수를 upgrade 변수에 세고, 각 포켓몬마다의 진화횟수를 count로 세서 가장 많이 진화한 포켓몬 이름을 갱신해 주었다.

진화할 때마다 사탕 2개를 받게 되니, 진화 시 "총 사탕 개수 - 필요한 사탕 개수" 를 할 때 2개를 덜 빼주면 된다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

// N : 포켓몬 종류
// P : 포켓몬
// M : P에 대한 총 사탕 개수
// K : P를 진화시키기 위해 필요한 사탕 개수
// 진화시킬 수 있는 총 마릿수 , 가장 많이 진화시킨 포켓몬 출력
// 총 마릿수가 동일할 경우 일찍 나타는 애 출력하면 됨. max < 마릿수
// 진화시키면 사탕 2개 추가로 줌

public class 포켓몬_GO_13717 {
    public static void main(String[] args) throws Exception{
       
        // 입력받기///////////////
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int N = Integer.parseInt(br.readLine());
        String monster[] = new String[N];
        int KM[][] = new int[N][2];

        for(int i = 0; i < N; i++) {
            monster[i] = br.readLine();

            st = new StringTokenizer(br.readLine());
            KM[i][0] = Integer.parseInt(st.nextToken());
            KM[i][1] = Integer.parseInt(st.nextToken());
        }
        // 입력받기///////////////

        // 진화횟수
        int upgrade = 0;
        // 포켓몬별 진화횟수 담을 변수
        int maxCount = Integer.MIN_VALUE;
        // 최대진화 포켓몬 저장할 변수
        String maxMonster = "";

        // 포켓몬별로 반복하기
        for(int i = 0; i < N; i++) {
            int candy = KM[i][1];
            int count = 0;

            // 진화에 필요한 사탕보다 가진 사탕이 많으면 진행
            while(true) {
                if(candy >= KM[i][0]) {
                    candy -= KM[i][0] - 2;
                    upgrade += 1;
                    count += 1;
                }
                else {
                    break;
                }
            }
            // 이 포켓몬이 최대 진화횟수라면 maxMonster 갱신
            if(count > maxCount) {
                maxCount = count;
                maxMonster = monster[i];
            }
        }
        System.out.println(upgrade);
        System.out.println(maxMonster);
    }
}

 

 

728x90
반응형