Por Nacho Cabanes
Nivel de dificultad aproximado (1 a 5): 2
Cuando un rey abdica, su primogénito hereda el trono y debe recibir, en su coronación, un número que lo identificará para la posteridad. La numeración es importante porque, de otro modo, sería difícil diferenciar a reyes con el mismo nombre de una misma dinastía al compartir también apellido.
El resultado es que ante la abdicación de un rey, toca revisar los libros de historia para averiguar su número. ¿Eres capaz de hacerlo tú?
Entrada
El programa recibirá, por la entrada estándar, múltiples casos de prueba. Cada uno consta de una primera línea con un número indicando la cantidad de reyes de una determinada dinastía. A continuación vendrá, en otra linea, los nombres de todos sus reyes separados por espacio.
Después aparecerán dos líneas más, una con la cantidad de sucesores futuros que hay que numerar (al menos uno), y otra con sus nombres separados por espacio.Después aparecerán dos líneas más, una con la cantidad de sucesores futuros que hay que numerar (al menos uno), y otra con sus nombres separados por espacio.
Todos los nombres estarán compuestos de una única palabra de no más de 20 letras del alfabeto inglés, y serán sensibles a mayúsculas. Además, se garantiza que en cada caso de prueba no habrá más de 20 nombres de reyes diferentes.
La entrada acaba con un caso de prueba sin potitos.
Salida
Para cada sucesor de cada caso de prueba se indicará, una línea independiente, el número que le corresponderá. Aunque normalmente se utilizan números romanos, por simplicidad se indicará el número en la notación arábiga tradicional. Después de cada caso de prueba se escribirá una línea en blanco.
(Asegúrate de que has leído las preguntas frecuentes antes de plantear tu solución)
Entrada de ejemplo 11 Felipe Carlos Felipe Felipe Felipe Carlos Felipe Carlos Alfonso Alfonso JuanCarlos 3 Felipe Leonor Felipe 12 Carlos Isabel Carlos Jorge Jorge Jorge Jorge Guillermo Victoria Jorge Jorge Isabel 3 Carlos Guillermo Jorge 0 Salida de ejemplo 6 1 7 3 2 7
// Reto 27: Abdicación de un rey // César Alegre Dávila. // 12-Ago-2014 // Nota del recopilador: // No es necesario guardar todas las respuestas y mostrarlas al final, // se puede ir mostrando la solución a cada caso directamente import java.util.Scanner; import java.util.ArrayList; public class Reto27 { public static void main(String[] args) { String salida = ""; Scanner entrada = new Scanner(System.in); int ACant, SCant; ACant = Integer.parseInt(entrada.nextLine()); while (ACant > 0) { ArrayList<String> abdicados = new ArrayList<>(); String[] ANombres = entrada.nextLine().split(" "); for (int i = 0; i < ACant; i++) { abdicados.add(ANombres[i]); } SCant = Integer.parseInt(entrada.nextLine()); String[] SNombres = entrada.nextLine().split(" "); for (int i = 0; i < SCant; i++) { String sucesor = SNombres[i]; int num = 1; for (String abdicado : abdicados) { if (sucesor.equals(abdicado)) { num++; } } abdicados.add(sucesor); salida += num + "\n"; } salida += "\n"; ACant = Integer.parseInt(entrada.nextLine()); } System.out.println(salida); } }