
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n;
int scenario = 0;
while((n = Integer.parseInt(br.readLine())) != 0){
Map<Integer, String> names = new HashMap<>();
Set<Integer> list = new HashSet<>();
scenario ++;
for(int i = 0; i < n; i++){
String name = br.readLine();
names.put(i + 1, name);
}
for(int i = 0; i < (2 * n) - 1; i++){
String line = br.readLine();
StringTokenizer str = new StringTokenizer(line);
// 여학생 번호는 최대 두 번이니까 A, B 를 저장해놓을 필요는 없다.
int num = Integer.parseInt(str.nextToken());
if(list.contains(num)) list.remove(num);
else list.add(num);
}
int answer = list.iterator().next();
String name = String.valueOf(names.get(answer));
StringBuilder sb = new StringBuilder();
sb.append(scenario).append(" ").append(name);
System.out.println(sb);
}
}
}
Set 은 인덱스가 없기 때문에 직접 꺼낼 수는 없지만,
이번 문제처럼 값이 하나만 남아있을 거라는 확신이 있다면
iterator 를 통해 꺼낼 수 있다.
for문도 내부적으로는 iterator 를 사용한다.즉, iterator는 자바 컬렉션을 꺼내 쓸 때 기본적인 원리 중 하나
int answer = list.iterator().next();
순서가 없지만 이번 문제에서는 관계가 없었기 때문에
쉽게 풀 수 있었다 !