일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 21964
- Java
- 14656번
- 1333번
- 7489번
- 25642번
- 14215번
- 1362번
- 티스토리챌린지
- 25576번
- 10814번
- 나무 공격
- 14726번
- 20953번
- 10409번
- 오블완
- 21866번
- 25904번
- 1141번
- 2355번
- 5597번
- 자바
- 14467번
- Baekjoon
- 14322번
- 1568번
- 백준
- 24267번
- 프로젝트 기획서
- 14592번
- Today
- Total
suheang
[백준] | JAVA, 자바 | 13717번 - 포켓몬 GO 본문
https://www.acmicpc.net/problem/13717
13717번: 포켓몬 GO
첫 번째 예제에서 지우가 어떻게 뿔충이(Weedle)를 진화시켰는지 보자. 처음 진화를 위해 지우는 12개의 사탕을 사용하였지만 2개를 돌려받아 32개의 사탕이 남는다 (42-12+2). 두 번째 진화 후엔 22
www.acmicpc.net
문제 요약 :
지우가 Pi 라는 포켓몬을 진화시키기 위해서는 해당 포켓몬의 Ki 개의 사탕이 필요하다. 진화가 된 후에는 2개의 사탕을 돌려받는다. 각 포켓몬은 그들 종의 사탕으로만 진화할 수 있다.
지우는 N종의 포켓몬이 있고 Pi 라는 포켓몬의 사탕은 Mi 개를 가지고 있으며 지우는 진화시킬 수 있는 포켓몬의 총 마리수를 궁금해한다.
또한, 지우는 가장 많이 진화시킬 수 있는 포켓몬이 무엇인지 알고 싶어한다. 만약 그런 포켓몬들이 여러 종이 있다면 도감번호가 가장 작은 포켓몬을 출력한다.
( 첫 번째 줄엔 진화시킬 수 있는 포켓몬의 총 마리수를 출력한다.
두 번째 줄엔 가장 많이 진화시킬 수 있는 포켓몬의 이름을 출력한다. )
문제 풀이 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] pokemon = new String[n];
int[] needCandi = new int[n];
int[] haveCandi = new int[n];
int[] pokemonEv = new int[n];
for (int i = 0; i < n; i++) {
pokemon[i] = br.readLine();
StringTokenizer st = new StringTokenizer(br.readLine());
needCandi[i] = Integer.parseInt(st.nextToken());
haveCandi[i] = Integer.parseInt(st.nextToken());
}
int evolution = 0;
for (int i = 0; i < n; i++){
while (haveCandi[i] >= needCandi[i]) {
evolution++;
pokemonEv[i]++;
haveCandi[i] = haveCandi[i] - needCandi[i] + 2;
}
}
int maxEv = 0;
int maxIndex = 0;
for (int i = 0; i < n; i++) {
if (pokemonEv[i] > maxEv) {
maxEv = pokemonEv[i];
maxIndex = i;
}
}
System.out.println(evolution);
System.out.println(pokemon[maxIndex]);
}
}
1. 포켓몬의 종류 수 N 입력받기
2. 포켓몬 이름과 가지고 있는 사탕 수, 진화하는데 필요한 사탕 수, 진화 횟수를 저장할 배열 생성
3. 포켓몬 이름과 가지고 있는 사탕 수, 진화하는데 필요한 사탕 수를 입력받기
4. 총 진화 회수를 저장하기 위해 변수 evolution 생성
5. 가지고 있는 사탕이 진화하는데 필요한 사탕의 개수보다 많거나 같다면 evolution을 1 올려주고 해당 포켓몬 진화 횟수 1 증가, 가지고 있는 사탕의 개수를 진화에 필요한 사탕의 개수만큼 빼고 사탕 2개 추가
6. 포켓몬 진화 횟수가 가장 높은 포켓몬의 index 값을 저장
7. 총 진화 횟수와 가장 많이 진화시킬 수 있는 포켓몬의 이름을 출력
'알고리즘' 카테고리의 다른 글
[백준] | JAVA, 자바 | 1173번 - 운동 (0) | 2024.04.21 |
---|---|
[백준] | JAVA, 자바 | 1159번 - 농구 경기 (0) | 2024.04.20 |
[백준] | JAVA, 자바 | 25496번 - 장신구 명장 임스 (5) | 2024.04.19 |
[백준] | JAVA, 자바 | 4659번 - 비밀번호 발음하기 (0) | 2024.04.18 |
[백준] | JAVA, 자바 | 1755번 - 숫자놀이 (1) | 2024.04.18 |