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는 링크 참고
'CS 지식 > 코딩테스트' 카테고리의 다른 글
99클럽 코테 스터디 9일차 TIL | 다단계 칫솔 판매 반례 (Python) (4) | 2024.11.06 |
---|---|
[백준 14712] 넴모넴모 (Easy) Python 솔루션 (0) | 2024.10.15 |
Python은 진짜 느릴까? : Python, C++, JS 실행시간 비교 (0) | 2024.09.10 |
[LeetCode] 189. Rotate Array (in-memory) (0) | 2023.01.09 |
[LeetCode] 50. Pow(x, n) in O(log n) time (0) | 2023.01.07 |