Retos - 027: Abdicación de un Rey

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

Aportar una solución

Tu nombre (si quieres que aparezca):
Tu web/blog (si quieres que incluyamos un enlace a ella):
Tu e-mail (no se mostrará; si quieres que te avisemos cuando esté publicado):
¿Eres humano? ¿Cuánto es 2 más 3?
Lenguaje
Fuente:

// 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);
 
    }
}