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
반응형
'Algorithm > Implementation' 카테고리의 다른 글
[Baekjoon 2108 / Python / 실버3] 통계학 (2) | 2024.09.25 |
---|---|
[Baekjoon 2503 / Python / 실버3] 숫자 야구 (4) | 2024.06.10 |
[Baekjoon 10655 / Java / 실버3] 마라톤 1 (0) | 2024.04.27 |
[Baekjoon 1913 / Java / 실버3] 달팽이 (0) | 2024.04.26 |
[Baekjoon 3190 / python / 골드4] 뱀 (0) | 2024.03.27 |