상세 컨텐츠

본문 제목

[TIL#18] Study] 코딩 테스트 6

개인 공부/코딩 테스트

by DK9 2023. 11. 9. 00:36

본문

전국 대회 선발 고사.ver Class

static class Student implements Comparable<Student> {       // compareTo를 쓰기 위한 인터페이스 Comparable
    int rank;
    int index;

    public Student(int rank, int index) {
        this.rank = rank;
        this.index = index;
    }                       //  Student 생성자

    @Override
    public int compareTo(Student s) {
        return this.rank - s.rank;
    }                   // 학생의 랭크 비교 메서드, 현재는 내림차순, s.rank를 앞으로 보내면 오름차순
}

public int solution(int[] rank, boolean[] attendance) {
    int answer = 0;

    List<Student> students = new ArrayList<>();
    for (int i = 0; i < attendance.length; i++) {
        if (attendance[i]) {
            students.add(new Student(rank[i], i));
        }
    }                   // 참석 가능한 학생을 구해서 Student 클래스 형태의 리스트에 랭크와 등록번호를 저장

    Collections.sort(students);         // 랭크 순으로 정렬, Student클래스 내부의 랭크 비교 메서드와 함께 쓰임.


    for (int i = 0; i < 3; i++) {
        answer += students.get(i).index * 10000 / ((int) Math.pow(100, i));
    }

    return answer;
}

 

  • static 클래스를 만들어서 문제를 풀었다.
  • 객체를 비교하기 위해선 2가지 방법이 있는데 난 그중 Comparable 을 사용했다.
    •  @Override
          public int compareTo(Student s) {
              return this.rank - s.rank;
          }
    • 사용법은 사용하고자 하는 클래스에 인터페이스 Comparable 를 임플란트 하고 메서드 compareTo 를 오버라이드한다.
    • ( ) 안의 매개변수와 비교한다. 이 경우 Student 클래스 s와 랭크를 비교한다.
  • 과정이 약간 달라지니까 바로 얼탔다.
    • 클래스는 설계도인데 설계도 안에서 정렬하는 메서드를 넣었다고 정렬하는 단계를 생략했다가 한참 헤맸다.
    • 정렬하는 단계를 생략했다고 다음 작업을 바로 생각하지 못했다.
  • 반복 숙달 과정이 더 필요하다.

Spring은 일단 수업 따라가기 바빠서 정리를 못하고 있다. 미래의 나 화이팅

 

관련글 더보기