문제(출처: https://www.acmicpc.net/problem/13717)
< 포켓몬 GO >
문제 풀이
각 진화시킬 수 있는 포켓몬 수를 구해서 ArrayList에 저장한 후 포켓몬 수를 기준으로 내림차순으로 정렬한다.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class _13717_ { // 포켓몬 GO
static class Pokemon implements Comparable<Pokemon> {
private String name;
private int cnt;
public Pokemon(String name, int cnt) {
this.name = name;
this.cnt = cnt;
}
@Override
public int compareTo(Pokemon o) {
return o.cnt - this.cnt;
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
ArrayList<Pokemon> list = new ArrayList<>();
int sum = 0;
for (int i = 0; i < n; i++) {
String p = bf.readLine();
st = new StringTokenizer(bf.readLine());
int k = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int cnt = 0;
while (k <= m) {
m = m - k + 2;
cnt += 1;
}
sum += cnt;
list.add(new Pokemon(p, cnt));
}
Collections.sort(list);
System.out.println(sum + "\n" + list.get(0).name);
}
}
변수)
n : 포켓몬의 종류 수
list : 포켓몬의 종류와 진화시킬 수 있는 수를 저장하는 ArrayList
sum : 진화시킬 수 있는 포켓몬의 총 마리수
p : 포켓몬 이름
k, m : 진화에 필요한 사탕의 수, 가지고 있는 총 사탕의 수
cnt : 각 포켓몬마다 진화시킬 수 있는 수
Pokemon
포켓몬의 이름과 진화시킬 수 있는 포켓몬 수를 변수로 가짐
Main
포켓몬의 종류 수를 입력받는다. 포켓몬의 종류 수만큼 다음 과정을 반복한다.
1) 포켓몬의 이름과 진화에 필요한 사탕의 수, 가지고 있는 총 사탕의 수를 입력받는다.
2) 진화시킬 수 있는 포켓몬 수를 구한다.
3) list에 저장
ArrayList를 진화시킬 수 있는 포켓몬 수를 기준으로 내림차순으로 정렬한다. 최종 진화시킬 수 있는 포켓몬의 총 마리수와 가장 많이 진화시킬 수 있는 포켓몬의 이름을 출력한다.
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 11068_회문인 수 (0) | 2024.08.26 |
---|---|
[Baekjoon] 2238_경매 (0) | 2024.08.09 |
[Baekjoon] 1254_팰린드롬 만들기 (0) | 2024.08.07 |
[Baekjoon] 2304_창고 다각형 (0) | 2024.08.05 |
[Baekjoon] 2508_사탕 박사 고창영 (0) | 2024.08.02 |