PS/백준

[백준] - 키 큰 사람 11292

팡세영 2022. 11. 7. 18:26

 


https://www.acmicpc.net/problem/11292

 

11292번: 키 큰 사람

민우는 학창시절 승부욕이 강해서 달리기를 할 때에도 누가 가장 빠른지를 중요하게 생각하고, 시험을 볼 때에도 누가 가장 성적이 높은지를 중요하게 생각한다. 이번에 반에서 키를 측정하였

www.acmicpc.net


[문제 풀이]

  • Sudent 클래스를 만든 후 클래스 정렬을 위해 Compareable 인터페이스를 구현해준다.
  • Colletions.sort 를 이용해 정렬을 해준 후 list를 순차적으로 탐색하면서 현재 요소와 다음 요소의 키가 다르다면
  • 반복문을 종료시킨다.
  • 실수 정렬을 위해 Double.compar(o1, o2)를 이용

[Java]

 

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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));


        while(true){
            int n = Integer.parseInt(br.readLine());

            if(n == 0) {
                bw.flush();
                return;
            }

            ArrayList<Student> student = new ArrayList<>();

            for(int i=0; i<n; i++){
                StringTokenizer st = new StringTokenizer(br.readLine());
                student.add(new Student(st.nextToken(), Double.parseDouble(st.nextToken())));
            }
            Collections.sort(student);
            student.add(new Student("is dummy", 99999.0));

            for(int i=0; i<student.size(); i++){
                bw.write(student.get(i).name + " ");

                if(student.get(i).height != student.get(i+1).height) break;

            }
            bw.write("\n");

        }

    }


}

class Student implements Comparable<Student>{
    String name;
    double height;

    public Student(String name, Double height) {
        this.name = name;
        this.height = height;
    }


    @Override
    public int compareTo(Student o) {
        return Double.compare(o.height,this.height);
    }
}