일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 프로그래머스
- git
- 트리
- lcap
- MySQL
- 스택
- 가중치없는그래프
- 이분탐색
- 반효경교수님
- 그래프
- microflow
- Sort
- 매개변수 탐색
- 해시맵
- 정렬
- 자료구조
- dfs
- 재귀
- SQL
- 완전탐색
- 자바
- 멘딕스
- algorithm
- Bruteforce
- 알고리즘
- Mendix
- Recursion
- 집합
- 백트래킹
- domain model
- Today
- Total
목록분할정복 (2)
mondegreen
처음 상태에서 모두 동일한 색인지를 확인한 후 그렇지 않다면 1~4사분면으로 시작점을 달리하여 재귀를 진행하도록 구현했다. 해당 범위 내에서 첫 수를 저장하고 달라진다면 다시 길이를 반으로 줄이고 다시 재귀를 돌도록 진행해서 같은 수로 작성된 정사각형인 경우에만 정답 배열에 더해주었다. 처음에는 1~4사분면 순회를 각각 작성했는데 가만히 보니 그냥 재귀의 시작점인 행렬 값을 바꿔주면 되는 것이라서 간단히 작성할 수 있었다. 재귀에 더더더 익숙해지면 좋겠다! import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTok..
분할정복의 개념 1) 분할: 해결할 문제를 여러 개의 작은 부분으로 나누기 2) 정복: 나눈 작은 문제를 각각 해결하기 => 이 때 나눈 작은 문제가 더 나눠질 수 있다면 다시 나눈다. 3) 통합: 해결한 해답을 모으기 분할정복의 응용 1) 병합 정렬(top-down 방식) - 안정 정렬 (1) 데이터 집합의 크기가 0 또는 1인지 확인 => true면 정렬 (2) 데이터 집합을 반으로 분할 (3) 나눈 집합을 하나의 집합으로 병합 (4) 최소 크기가 될 때까지 분할 (5) 조각난 데이터 집합을 정렬하며 병합(재귀 호출 이용) 시간 복잡도 공간 복잡도 O(nlogn) O(n) 2) 퀵정렬 - 불안정 정렬 (1) 데이터 집합의 크기가 0 또는 1인지 확인 => true면 정렬 (2) 데이터 집합을 반으로 ..