본문 바로가기
알고리즘/시험 팁

Java 시험장 팁

by shinyou1024 2020. 4. 24.

1. 정렬

sort()

Arrays.sort() : 배열 정렬

Collections.sort() : List Collection 정렬 ex) ArrayList, LinkedList, Vector

Interface Comparable

  • 기본적으로 적용되는 정렬 기준이 되는 메서드를 정의

  • 기본적으로 오름차순

  • 구현 방법

    1. 정렬할 객체에 Comparable interface implements

    2. compareTo() 메서드 오버라이드

    리턴 값이 음수, 0 ⇒ 그대로

    리턴 값이 양수 ⇒ 두 객체 swap

     

     

if(this.o > param.o) return 1 // 오름차순
if(this.o < param.o) return 1 // 내림차순
else return -1

 

 

- 예시

@Override
// 오름차 순 (어린거부터)
public int compareTo(Student target) {
		// this의 나이가 target의 나이보다 많으면 swap => 오름차순
    return this.age >= target.age ? 1 : - 1; 
 }
// x좌표가 증가하는 순, 같으면 y좌표가 감소하는 순으로 정렬
class Point implements Comparable<Point> {
    int x, y;
    @Override
    public int compareTo(Point p) {
        if(this.x > p.x) {
            return 1; // x에 대해서는 오름차순
        }
        else if(this.x == p.x) {
            if(this.y < p.y) { // y에 대해서는 내림차순
                return 1;
            }
        }
        return -1;
    }
}

https://gmlwjd9405.github.io/2018/09/06/java-comparable-and-comparator.html

 

Interface Comparator

  • 정의 : 기본 정렬 기준과 다르게 정렬하고 싶을 때 사용

    주로 내림차순 정렬로 바꿀 때

  • 구현

    1 ) Comparator interface implements

    1. compare() 메서드 오버라이드

      // x좌표가 증가하는 순, 같으면 y좌표가 감소하는 순 Comparator<Point> myComparator = new Comparator<Point>() { @Override public int compare(Point p1, Point p2) { if(p1.x > p2.x) return 1; else if(p1.x == p2.x) { if(p1.y < p2.y) return 1; }

      return -1; }

      };

      // main Collections.sort(pointList, myComparator);

 

2. 디버깅

디버거

  • toString() 메서드를 오버라이딩 할 경우 Expression tab에서 객체의 id가 아닌 원하는 멤버의 값으로 볼 수 있다!

 

 

3. 런타임 에러

  • 동적 할당을 하게 되면 n=1 처럼 최소케이스에서, memo[3] 접근시 에러가 날 수도 있음!!

    ⇒ 최소 케이스 예외처리를 해 주자

  • 자바에서 객체 배열을 선언해놓고 student.y = Integer.parseInt(st.nextToken()); 이렇게 하면 오류!

  • 파일 입출력은 지웠는지!!

 

계속 업데이트 됩니다!

'알고리즘 > 시험 팁' 카테고리의 다른 글

나무재테크로 알아보는 Map 자료구조  (0) 2020.06.03

댓글