reverse()?
reverse()는 주로 Collections 클래스나 StringBuilder 클래스를 사용하여 리스트나 문자열을 뒤집는 데 사용한다.
자바가 아닌 파이썬의 경우에는 주로 List 객체에서 주로 사용된다.
아래는 정렬 이후 reverse()를 사용해 내림차순 정렬을 한 코드의 결과 값이다. (개인적으로 코테 문제를 풀면서 처음으로 배운 부분을 스스로 적용한 부분이라 아직도 기억이 잘 나는중)

적용해보기 (reverse() x)
reverse() 메서드를 사용하지 않을 때 내림차순 정렬은 어떻게 해야 할까?
제일 접근 하기 쉬운 Bubble Sort로 내림차순에 대한 코드를 짠다면 다음과 같이 짤 수 있다

Bubble Sort를 사용하니 임의의 공간인 temp를 만들어줘 비교를 통해 자리를 바꿔준다.

입력을 {5, 1, 4, 2, 8, 3}을 주었기 때문에 정렬한 결과 [8, 5, 4, 3, 2, 1]순으로 내림차순으로 잘 정렬된 걸 볼 수 있다.
이 코드의 단점은 내림차순으로 만들기 위해 시간복잡도가 O(n^2)이라는 점과, 코드가 길어져 효율적이지 못하다는 점이다.
그럼 reverse()를 사용할 땐 어떨까?
적용해보기 (reverse() o)
reverse()를 활용해 내림차순 정렬을 할 때는 Bubble sort를 할 때보다 훨씬 더 간결한 코드로 정렬을 수행할 수 있다.
백준 1427번 SortInside 문제에 한 번 적용해보겠다.

문제는 다음과 같다
이 문제에 reverse()를 적용한다면 다음과 같이 코드를 짤 수 있다.

아까보다 훨씬 간결하기 때문에 코드에 대해 분석하기도 굉장히 쉽다

결과도 문제에서 요구한대로 내림차순 정렬이 잘 되는 것을 볼 수 있다.
후기
최근 스파르타에서 코드타카(코테 문제 푸는 시간) 시간에 문제를 풀다 보니 프로그래머스의 "정수 내림차순으로 배치하기"라는 문제를 풀다 이전에 학습했던 내용에 대해 다시 정리해보며(버블소트가 효율이 안좋다는 것도 다시 깨닫고) 글을 작성해보았다.
사실 프로젝트와 코테의 간극이 존재하기 때문에 실무에서 reverse()를 쓸 일이 많을 것 같지는 않지만 본인에게는 매우 유의미한 경험이기에,,
'Java' 카테고리의 다른 글
| [Java] Volatile (1) | 2024.11.19 |
|---|---|
| [Java] Thread Join (2) | 2024.11.12 |
| [Java] Record (4) | 2024.11.11 |
| [Java] What is NullPointException? (0) | 2024.09.24 |
| [Java] Linear Search AND Binary Search (2) | 2024.09.03 |
