문제
모바일 게임을 즐겨 하는 지우는 Jetpack Joyride 에 금새 질렸고 포켓몬 GO를 시작했다! 이 게임의 재미있는 점은 포켓몬을 진화시킬 수 있다는 것이다.
지우가 Pi 라는 포켓몬을 진화시키기 위해서는 해당 포켓몬의 Ki 개의 사탕이 필요하다. 진화가 된 후에는 2개의 사탕을 돌려받는다.
각 포켓몬은 그들 종의 사탕으로만 진화할 수 있다.
지우는 N종의 포켓몬이 있고 Pi 라는 포켓몬의 사탕은 Mi 개를 가지고 있으며 지우는 진화시킬 수 있는 포켓몬의 총 마리수를 궁금해한다.
또한, 지우는 가장 많이 진화시킬 수 있는 포켓몬이 무엇인지 알고 싶어한다. 만약 그런 포켓몬들이 여러 종이 있다면 도감번호가 가장 작은 포켓몬을 출력한다. 즉, 입력 데이터에서 더 먼저 나타나는 포켓몬을 출력하면 된다.
입력
첫 번째 줄에는 포켓몬의 종류 수를 나타내는 N (1 ≤ N ≤ 70)이 주어진다.
그 다음 2N 줄에는 N개의 데이터 세트가 입력되는데
- 2i 번째 줄에는 i번째 포켓몬의 이름을 나타내는 최대길이 20의 Pi 문자열이 주어진다.
- 2i + 1 번째 줄에는 Ki (12 ≤ Ki ≤ 400) , Mi (1 ≤ Mi ≤ 104) 가 주어지는데 각각 i 번째 포켓몬이 진화에 필요한 사탕의 수와 지우가 가지고 있는 i 번째 포켓몬의 총 사탕의 수이다.
출력
첫 번째 줄엔 진화시킬 수 있는 포켓몬의 총 마리수를 출력한다.
두 번째 줄엔 가장 많이 진화시킬 수 있는 포켓몬의 이름을 출력한다.
조건
시간 제한: 1초
메모리 제한: 32MB
코드 (Java 11)
import java.util.Scanner;
public class Main
{
public static void main(String args[])
{
Scanner scanner = new Scanner(System.in);
int test=scanner.nextInt(), index=0, result=0, max=-1;
Pokemon pokemon[]=new Pokemon[test];
for(int t=0;t<test;t++)
{
String name=scanner.next();
int need=scanner.nextInt(), hava=scanner.nextInt();
pokemon[t]=new Pokemon(name, need, hava);
int evolution=pokemon[t].get_evolution();
if(max<evolution)
{
index=t;
max=evolution;
}
result+=evolution;
}
System.out.println(result);
System.out.println(pokemon[index].name);
scanner.close();
}
}
class Pokemon
{
String name;
int candy_need, candy_have;
public Pokemon(String name, int candy_need, int candy_have)
{
this.name=name;
this.candy_need=candy_need;
this.candy_have=candy_have;
}
public int get_evolution()
{
int evolution=0;
while(candy_have>=candy_need)
{
candy_have-=candy_need;
evolution++;
candy_have+=2;
}
return evolution;
}
}
'Programming > JAVA' 카테고리의 다른 글
[백준] 2740번 : 행렬 곱셈 (Java / 자바) (0) | 2023.11.09 |
---|---|
[백준] 2460번 : 지능형 기차 2 (Java / 자바) (0) | 2023.08.11 |
[백준] 1475번 : 방 번호 (Java / 자바) (1) | 2023.08.10 |
[백준] 10250번 : ACM 호텔 (Java / 자바) (0) | 2023.08.09 |
[백준] 3034번 : 앵그리 창영 (Java / 자바) (0) | 2023.08.08 |