Java에서 Queue 자료구로를 처음 사용해 보았다.
Queue에 String과 int를 한번에 넣을 수 있도록 Student를 객체를 만들어 보았다.
Queue 클래스의 경우 Queue students = new LinkedList<>(); 형태로 할당해줘야 한다.
poll()의 의미는 C++에서의 pop()이다.
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
class Student {
String initial;
int id;
public Student(String initial, int id) {
this.initial = initial;
this.id = id;
}
public String getInitial() {
return initial;
}
public int getId()
{
return id;
}
}
public class bj29813 {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
Queue<Student> students = new LinkedList<>();
students = inputData();
System.out.println(findAnswer(students));
scanner.close();
}
public static Queue<Student> inputData()
{
Queue<Student> temp = new LinkedList<>();
int i, N;
String initial;
int id;
N = scanner.nextInt();
for(i = 0; i < N; i++)
{
initial = scanner.next();
id = scanner.nextInt();
temp.add(new Student(initial, id));
}
return temp;
}
public static String findAnswer(Queue<Student> students)
{
String answer = "";
int i;
String initial;
int id;
while(students.size() > 1)
{
Student student = students.poll();//poll()은 가장 앞 요소 제거 + 반환
//initial = student.getInitial();
id = student.getId();
for(i = 0; i < id - 1; i++)
{
students.add(students.poll());
}
students.poll();
}
Student student = students.poll();//poll()은 가장 앞 요소 제거 + 반환
initial = student.getInitial();
answer = initial;
return answer;
}
}