Algorithm Study

[프로그래머스] 가장 큰 수 ( level.2) / JAVA / 정렬(Comparator)

hyun-1200 2022. 6. 10. 17:26

https://programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

 

완탐으로 풀었더니, 메모리 초과 ! 

 

Comparable, Comparator 인터페이스를 사용해서 비교해서 푸는 문제였다.

지난 번 공부했다고 생각했는데 구현하려하니까 하나도모르겠음.

복습하고 제대로 머리에 새길겸 보완해서 다시 정리해보았다. 

 

https://hyun-1200.tistory.com/68

 

Comparator/ Comparable / Sort / 내림차순

sort 메소드를 통해 내림차순에 대해서 알아보다가 여기까지왔다.. Arrays.sort(배열이름) Collections.sort(리스트이름) 위의 두 배열은 오름차순이 기본이다. 그런데 오름차순이 아닌 내림차순이 하고

hyun-1200.tistory.com


* Comparable 과 Comparator은 두 객체를 비교할 수 있는 기능의 인터페이스이다.

- 다른 비교 기준으로 사용하고 싶을 때, Comparator을 implements해서 구현해줘야 한다. 

o1.compareTo(o2) 
- 첫번째 인자가 더 크면 양수, 더 작으면 음수, 같으면 0 반환. 
- o1 >  o2 : 양수
- o1 < o2  : 음수
- o1 = o2 : 0 

compare(o1,o2) 
- 양수인 경우, o1과 o2의 순서를 바꾼다.
- 음수 또는 0 인경우, 순서를 바꾸지 않는다. 

 


 

 

코드.

복습해보기 ! 




 

 

참고했던 블로그

https://blog.naver.com/tnrusl1020/222328220974

 

[java] 정렬을 간편해주는 Comparator 인터페이스 (예제_프로그래머스_가장 큰 수)

알고리즘을 풀다보면 정렬이 필요한 경우가 많다. 처음엔 무식하게 for문 돌려서 비교했는데 그러니까 계속...

blog.naver.com