CS 지식/코딩테스트

탐색을 위한 Position Class

Julie825 2023. 1. 6. 16:23
data class Position(
    var x: Int,
    var y: Int,
) {
    operator fun plus(other: Position): Position {
        return Position(this.x + other.x, this.y + other.y)
    }
    // 깊은 복사에는 .copy 호출(data class에서 구현해줌)
}

enum class Direction(position: Position) {
    TOP(Position(-1, 0)),
    BOTTOM(Position(1, 0)),
    LEFT(Position(0, -1)),
    RIGHT(Position(0, 1))
}

* copy 사용시 주의할 점

: x, y에 Primitive type이 아닌 객체를 사용한다면, 직접 깊은 복사를 구현해야한다. copy() 메서드는 단순히 모든 속성을 =으로 할당하는 작업만 하기 때문이다. 재귀적으로 copy를 호출하지 않는다.

 

plus(+) 외의 다른 operation overload는 링크 참고