백준 29813 java

magicdrill·2024년 9월 30일

백준 문제풀이

목록 보기
451/673

백준 29813 java

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

0개의 댓글