인프런 커뮤니티 질문&답변

ehdtjqzz님의 프로필 이미지
ehdtjqzz

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

1. 씨름선수

comparable관련 질문입니다.

작성

·

111

0

안녕하세요.

씨름선수 문제를 풀다가 궁금한 점이 생겨 글남깁니다.

 

comparable 을 구현하여 compareTo를 정의할 때 선행원소 - 후행 원소 가 음수이면 자리를 바꾸지 않고, 양수이면 자리를 바꾸는 것으로 알고 있습니다.

문제 코드를 예시로 들어서 return this.h - o.h 라면 선행원소가 this.h 이고 후행원소가 o.h 라는 것은 어떻게 알 수 있나요? 물론 외우면 되긴 하지만 원리가 궁금합니다.

 

두서 없는 글 읽어주셔서 감사합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

Comparable 인터페이스의 compareTo 메서드는 두 객체를 비교하는 기능을 구현할 때 사용됩니다. 이 메서드에서 비교 대상이 되는 객체는 this로 표현되고, 비교되는 다른 객체는 메서드의 파라미터로 전달됩니다. 따라서 this.h - o.h 구문에서 this.h는 현재 객체의 h 속성 값을 가리키고, o.h는 비교 대상 객체의 h 속성 값을 가리키게 됩니다.

compareTo 메서드는 비교 결과에 따라 음수, 0, 양수 중 하나를 반환하며, 이 값에 따라 객체의 정렬 순서가 결정됩니다. 반환 값이 음수인 경우 this 객체가 비교 대상 객체보다 작다는 것을 의미하고, 양수인 경우 크다는 것을 의미합니다. 정렬의 원리와 관련하여, 자바의 정렬 메커니즘은 이 반환 값을 사용하여 두 객체의 위치를 결정하게 됩니다.

원리적으로 보면, compareTo를 호출하는 순간의 상황에서 this는 호출 주체가 되며, 파라미터로 전달된 객체(o)는 비교 대상이 됩니다. 이 관계를 이해하면, thiso 사이에서 누가 선행 원소고 누가 후행 원소인지 파악하는 데 필수적입니다.

마지막으로, compareTo 메서드 내에서 this.ho.h를 비교하는 로직은 개발자가 정의하는 비교 기준에 따라 달라지므로, 명확한 비교 기준을 설정하는 것이 중요합니다. 이러한 비교 기준에 따라 정렬이 이루어지게 됩니다.

질문에 답변이 되었기를 바랍니다. 추가적인 질문이 있으시면 언제든지 문의해주세요.

ehdtjqzz님의 프로필 이미지
ehdtjqzz

작성한 질문수

질문하기