TIL 2022-03-26-토

그린·2022년 3월 26일
0

TIL

목록 보기
24/47

1. 오늘 학습한 내용

백준 브루트포스 2798번, 정렬 11650번 문제

2. 알게 된 내용

브루트포스

가능한 경우의 수를 모두 탐색하면서 요구에 맞는 답는 방법을 찾는 방법.
해가 존재할 것으로 예상되는 모든 영역을 전체 탐색한다.
순차탐색, BFS, DFS가 관련있는 도구다.

출처 : https://hcr3066.tistory.com/26

자바 Arrays.sort()와 Comparator

Arrays.sort()의 인자는 2가지

  • 1차원 배열
    • 2차원 배열을 정렬하고 싶다면, 요소들을 arr[]로 잡고 진행!
  • Comparator
    • compare 메소드를 오버라이딩하여 compare 메소드 안에 자신만의 비교 방법(우선순위 판단)을 구현하면 된다.
Arrays.sort(arr, new Comparator<int[]>() {
	@Override
	public int compare(int[] o1, int[] o2) {
		if (o1[0] == o2[0]) {   // 첫 번째 원소가 같다면 두 번째 원소끼리 비교
			return o1[1] - o2[1];
		}
		else {
			return o1[0] - o2[0];
		}
	}
});
  • 참고 ) return o1[1] - o2[1] 의 의미
    앞의 것을 a, 뒤의 것을 b라고 이름을 바꾸면, a - b를 했을 때 a > b 이면 양수, a == b 이면 0, a < b 이면 음수를 반환한다. 이러한 a,b의 대소관계 비교는 Arrays.sort()가 정렬할 때 사용할 수 있다! Comparator 익명 클래스 정보를 기반으로 어떤 원소가 우선순위가 높은지를 compare() 함수를 통해 알아내고, 두 원소의 위치를 바꿀지 말지를 결정할 수 있다.

출처 : https://st-lab.tistory.com/110

3. 느낀 점

Arrays.sort()에 대해 잘 알지는 못했는데 이번 기회에 조금 더 자세히 알게 되었다. comparator에 대해서도 완전히 잊고 있었지만... 오늘 문제를 풀어보면서 다시 복습하게 되었다. 꾸준히 공부하자!
처음에 제일 쉬운 버블정렬로 풀었지만 시간 초과가 떠서 합병정렬로도 풀어보려고 했지만 2차원 배열이여서 막혔다.. 그래서 다른 분의 설명을 보면서 해결했는데, 앞으로도 꼭 이런 정렬 방법이 아니어도 Arrays.sort()를 이용해서 풀어보는 것도 고려해보도록 하자!

profile
기록하자

0개의 댓글

관련 채용 정보