분할정복 [BOJ] 1992번: 쿼드트리(Java) 압축이 되지 않으면 4구역으로 나누어서 연산을 진행해야 하는 분할정복 알고리즘 문제 함수 내에서 구역을 나눌 필요 없이 압축이 되는지부터 확인(canZip) 압축이 가능하다면 (=범위내에 모든 수가 같다면) 해당 수를 StringBuilder변수에 저장 압축이 불가능하다면, size와 현재 시작위치(ci, cj)를 기준으로 4구역으로 나눈 후 재귀 호출 코드... 분할정복분할정복 [Python 파이썬]백준 10830번 행렬 제곱 풀이 문제 문제는 정말 간단하다. 그냥 주어지는 행렬의 B제곱만 구하면 되는 일 말이 간단하지만 입력은 1000억까지다. 입력이 굉장히 크기도하고, 제곱이면 분할정복으로 접근할 수 있지 않을까..? 라는 생각으로 접근한다면 거듭제곱 분할정복으로 모두 쉽게 풀지 않을까 싶으나 80%에서 뭐가 틀렸을까 계속 고민하게 만드는 문제랄까.., 풀이 첫 번째는 행렬을 곱하는 함수를 만들자. 어쨋건 행렬을 곱... 백준분할정복알고리즘백준 [WEEK02] DAY17 & TMI * 슬라이싱 #2 먼저 어제 글에서 잠깐 나왔던 슬라이싱 그래서 pop()을 했을 때 기존에 가져온 A리스트와 완전 별개의 리스트가 생성된다. 반면 B=A와 같은 꼴은 한 곳에서 pop()을 하면 양쪽이 다 pop이 된다. 다시 보니 또 기억이 안났던..........공유기,,, 2493 탑 (스택) 밑 부분에 11.17(수) 부분을 보면 된다 10000 원 영역 (스택) {, }와 같은 괄... 우선순위큐큐분할정복슬라이싱스택이분탐색분할정복 [백준] 트리의 순회 - Python Input으로 in-order(중위 순회)의 결과와 post-order(후위 순회)의 결과를 받고 pre-order(전위 순회)를 구하는 문제 입니다. 그렇기 때문에 중위 순회의 결과는 루트 노드를 기준으로 왼쪽 자식 노드의 결과 리스트 -> 루트 노드 값 -> 오른쪽 자식 노드의 결과 리스트 순으로 출력됩니다. 왼쪽 -> 오른쪽 자식 노드를 탐색한 다음, 마지막으로 루트 노드의 데이터를 탐... 순회트리코딩테스트분할정복분할정복 백준 - 쿼드 트리 1992번 이때, x는 w,b가 섞여있을때 나타낸 표시이다. (그림을 설명을 위해 퍼 온것이기 때문에 코드에서는 x에 대한 구현을 하지는 않을 것이다.) 분할 정복은 무엇인가? 우리는 재귀함수를 통해 수열이 1의 값이 될 때까지 분할한 후 병합하는 과정이다. 따라서 우리는 재귀함수를 통해서 제일 작은 사각형까지 분할한 후 그 다음 사각형(2X2)가 모두 하얀색인지 색이 섞여있는지 확인한다. 이런 식으로... algorithm분할정복algorithm BOJ1780 종이의 개수 문제 실버II | 백준 1780 | Python3 파이썬 풀이 알고리즘 문제와 매우 유사하다. ( ) 색종이 만들기는 4등분하지만, 이 문제는 9등분한다. 종이를 9개의 정사각형 그룹으로 나눈 뒤, 각 그룹이 모두 같은 값이라면 그 종이는 쓸 수 있는 종이이므로 그 값에 따른 개수를 기록한다. 만약 종이의 크기가 1x1까지 왔다면 더 이상 자를 수 없으므로 그 종이의 값에 따른 개수를 기록한... 재귀분할정복분할정복 BOJ2630 색종이 만들기 문제 실버III | 백준 2630 | Python3 파이썬 풀이 알고리즘 문제와 매우 유사하다. 이 문제는 문제에 설명이 아주 자세하게 쓰여있어서 그대로 따라 구현하면 된다. 이런 종이의 경우 위 사진과 같이 나누면 된다. 각 종이를 4등분 해나가며 그 그룹이 같은 값(1 또는 0)으로 이루어져있다면 더 이상 나누지 않아도 된다. 파이썬의 2차원 리스트 슬라이싱을 이용해 나눠진 4개의 정사각... 재귀분할정복분할정복 백준 11728 : 배열 합치기 (분할정복 알고리즘) 1. 접근 처음에는 단순하게 벡터를 하나만 정의해서 저장한 후 정렬을 해주었다. 이 경우에는 1차원 배열이기 때문에 가능했지만, 2차원 배열이 되거나, 배열의 크기가 기하급수적으로 커진다면 효율성이 굉장히 낮아진다. 두 정렬되어있는 배열을 정렬해서 합치는 경우, 결국에는 각 배열의 값을 비교하여 작은 값을 먼저 빈 배열에 넣으면 된다. 이 과정을 반복하게 된다 => 분할 정복 ! cf. 분할... cpp분할정복cpp BOJ2630 분할정복, 재귀문제라고 해서 배열에서 분할정복할 경우 범위(사이즈), 체크를 꼭 해주어야겠다.... 재귀분할정복분할정복 [알고리즘]Algospot_FANMEETING 출처 : 가장 멤버가 많은 아이돌 그룹으로 기네스 북에 올라 있는 혼성 팝 그룹 하이퍼시니어가 데뷔 10주년 기념 팬 미팅을 개최했습니다. 팬 미팅의 한 순서로, 멤버들과 참가한 팬들이 포옹을 하는 행사를 갖기로 했습니다. 하이퍼시니어의 멤버들은 우선 무대에 일렬로 섭니다. 팬 미팅에 참가한 M명의 팬들은 줄을 서서 맨 오른쪽 멤버에서부터 시작해 한 명씩 왼쪽으로 움직이며 멤버들과 하나씩 포... 카라츠바algorithmalgospot분할정복algorithm [AlgoSpot] fence.py python분할정복FENCEFENCE [Baekjoon] - 2630. 색종이 만들기(S3) 아래 <그림 1>과 같이 여러개의 정사각형칸들로 이루어진 정사각형 모양의 종이가 주어져 있고, 각 정사각형들은 하얀색으로 칠해져 있거나 파란색으로 칠해져 있다. 주어진 종이를 일정한 규칙에 따라 잘라서 다양한 크기를 가진 정사각형 모양의 하얀색 또는 파란색 색종이를 만들려고 한다. 전체 종이가 모두 같은 색으로 칠해져 있지 않으면 가로와 세로로 중간 부분을 잘라서 <그림 2>의 I, II, ... 분할정복algorithmbaekjoon재귀algorithm 이분탐색(분할정복) 주어진 요소들을 반씩 분할해나가면서 탐색하는 방식 이분탐색의 개념은 더 나아가 분할정복을 하는데 사용! 문제를 절반으로 나누면서 풀어나가는 방식, 즉 분할해나가면서 해답을 찾는다. DFS/BFS와는 개념과 로직이 완전히 다르므로 혼동하지않도록 유의한다. 정수를 입력받은 임의의 배열에 대해 오름차순으로 배열하는 로직 배열 내에서 모든 요소들을 비교하는 것이 아닌, 비교대상을 반으로 분할해나간다... 분할정복파이썬이분탐색파이썬문법분할정복 백준 - 버블 소트 1517번 O(N^3)$ 알고리즘: 크기 2560인 입력까지를 1초 안에 풀 수 있습니다. 이때 25603은 대략 16억입니다. O(N^2)$ 알고리즘: 크기 40960인 입력까지를 1초 안에 풀 수 있습니다. 이때 409602은 대략 16억입니다. O(N \lg N)$ 알고리즘: 크기가 대략 2천만인 입력까지를 1초 안에 풀 수 있습니다. 이때 lg N \lg N NlgN은 대략 5억입니다. O(N)... 분할정복algorithmalgorithm
[BOJ] 1992번: 쿼드트리(Java) 압축이 되지 않으면 4구역으로 나누어서 연산을 진행해야 하는 분할정복 알고리즘 문제 함수 내에서 구역을 나눌 필요 없이 압축이 되는지부터 확인(canZip) 압축이 가능하다면 (=범위내에 모든 수가 같다면) 해당 수를 StringBuilder변수에 저장 압축이 불가능하다면, size와 현재 시작위치(ci, cj)를 기준으로 4구역으로 나눈 후 재귀 호출 코드... 분할정복분할정복 [Python 파이썬]백준 10830번 행렬 제곱 풀이 문제 문제는 정말 간단하다. 그냥 주어지는 행렬의 B제곱만 구하면 되는 일 말이 간단하지만 입력은 1000억까지다. 입력이 굉장히 크기도하고, 제곱이면 분할정복으로 접근할 수 있지 않을까..? 라는 생각으로 접근한다면 거듭제곱 분할정복으로 모두 쉽게 풀지 않을까 싶으나 80%에서 뭐가 틀렸을까 계속 고민하게 만드는 문제랄까.., 풀이 첫 번째는 행렬을 곱하는 함수를 만들자. 어쨋건 행렬을 곱... 백준분할정복알고리즘백준 [WEEK02] DAY17 & TMI * 슬라이싱 #2 먼저 어제 글에서 잠깐 나왔던 슬라이싱 그래서 pop()을 했을 때 기존에 가져온 A리스트와 완전 별개의 리스트가 생성된다. 반면 B=A와 같은 꼴은 한 곳에서 pop()을 하면 양쪽이 다 pop이 된다. 다시 보니 또 기억이 안났던..........공유기,,, 2493 탑 (스택) 밑 부분에 11.17(수) 부분을 보면 된다 10000 원 영역 (스택) {, }와 같은 괄... 우선순위큐큐분할정복슬라이싱스택이분탐색분할정복 [백준] 트리의 순회 - Python Input으로 in-order(중위 순회)의 결과와 post-order(후위 순회)의 결과를 받고 pre-order(전위 순회)를 구하는 문제 입니다. 그렇기 때문에 중위 순회의 결과는 루트 노드를 기준으로 왼쪽 자식 노드의 결과 리스트 -> 루트 노드 값 -> 오른쪽 자식 노드의 결과 리스트 순으로 출력됩니다. 왼쪽 -> 오른쪽 자식 노드를 탐색한 다음, 마지막으로 루트 노드의 데이터를 탐... 순회트리코딩테스트분할정복분할정복 백준 - 쿼드 트리 1992번 이때, x는 w,b가 섞여있을때 나타낸 표시이다. (그림을 설명을 위해 퍼 온것이기 때문에 코드에서는 x에 대한 구현을 하지는 않을 것이다.) 분할 정복은 무엇인가? 우리는 재귀함수를 통해 수열이 1의 값이 될 때까지 분할한 후 병합하는 과정이다. 따라서 우리는 재귀함수를 통해서 제일 작은 사각형까지 분할한 후 그 다음 사각형(2X2)가 모두 하얀색인지 색이 섞여있는지 확인한다. 이런 식으로... algorithm분할정복algorithm BOJ1780 종이의 개수 문제 실버II | 백준 1780 | Python3 파이썬 풀이 알고리즘 문제와 매우 유사하다. ( ) 색종이 만들기는 4등분하지만, 이 문제는 9등분한다. 종이를 9개의 정사각형 그룹으로 나눈 뒤, 각 그룹이 모두 같은 값이라면 그 종이는 쓸 수 있는 종이이므로 그 값에 따른 개수를 기록한다. 만약 종이의 크기가 1x1까지 왔다면 더 이상 자를 수 없으므로 그 종이의 값에 따른 개수를 기록한... 재귀분할정복분할정복 BOJ2630 색종이 만들기 문제 실버III | 백준 2630 | Python3 파이썬 풀이 알고리즘 문제와 매우 유사하다. 이 문제는 문제에 설명이 아주 자세하게 쓰여있어서 그대로 따라 구현하면 된다. 이런 종이의 경우 위 사진과 같이 나누면 된다. 각 종이를 4등분 해나가며 그 그룹이 같은 값(1 또는 0)으로 이루어져있다면 더 이상 나누지 않아도 된다. 파이썬의 2차원 리스트 슬라이싱을 이용해 나눠진 4개의 정사각... 재귀분할정복분할정복 백준 11728 : 배열 합치기 (분할정복 알고리즘) 1. 접근 처음에는 단순하게 벡터를 하나만 정의해서 저장한 후 정렬을 해주었다. 이 경우에는 1차원 배열이기 때문에 가능했지만, 2차원 배열이 되거나, 배열의 크기가 기하급수적으로 커진다면 효율성이 굉장히 낮아진다. 두 정렬되어있는 배열을 정렬해서 합치는 경우, 결국에는 각 배열의 값을 비교하여 작은 값을 먼저 빈 배열에 넣으면 된다. 이 과정을 반복하게 된다 => 분할 정복 ! cf. 분할... cpp분할정복cpp BOJ2630 분할정복, 재귀문제라고 해서 배열에서 분할정복할 경우 범위(사이즈), 체크를 꼭 해주어야겠다.... 재귀분할정복분할정복 [알고리즘]Algospot_FANMEETING 출처 : 가장 멤버가 많은 아이돌 그룹으로 기네스 북에 올라 있는 혼성 팝 그룹 하이퍼시니어가 데뷔 10주년 기념 팬 미팅을 개최했습니다. 팬 미팅의 한 순서로, 멤버들과 참가한 팬들이 포옹을 하는 행사를 갖기로 했습니다. 하이퍼시니어의 멤버들은 우선 무대에 일렬로 섭니다. 팬 미팅에 참가한 M명의 팬들은 줄을 서서 맨 오른쪽 멤버에서부터 시작해 한 명씩 왼쪽으로 움직이며 멤버들과 하나씩 포... 카라츠바algorithmalgospot분할정복algorithm [AlgoSpot] fence.py python분할정복FENCEFENCE [Baekjoon] - 2630. 색종이 만들기(S3) 아래 <그림 1>과 같이 여러개의 정사각형칸들로 이루어진 정사각형 모양의 종이가 주어져 있고, 각 정사각형들은 하얀색으로 칠해져 있거나 파란색으로 칠해져 있다. 주어진 종이를 일정한 규칙에 따라 잘라서 다양한 크기를 가진 정사각형 모양의 하얀색 또는 파란색 색종이를 만들려고 한다. 전체 종이가 모두 같은 색으로 칠해져 있지 않으면 가로와 세로로 중간 부분을 잘라서 <그림 2>의 I, II, ... 분할정복algorithmbaekjoon재귀algorithm 이분탐색(분할정복) 주어진 요소들을 반씩 분할해나가면서 탐색하는 방식 이분탐색의 개념은 더 나아가 분할정복을 하는데 사용! 문제를 절반으로 나누면서 풀어나가는 방식, 즉 분할해나가면서 해답을 찾는다. DFS/BFS와는 개념과 로직이 완전히 다르므로 혼동하지않도록 유의한다. 정수를 입력받은 임의의 배열에 대해 오름차순으로 배열하는 로직 배열 내에서 모든 요소들을 비교하는 것이 아닌, 비교대상을 반으로 분할해나간다... 분할정복파이썬이분탐색파이썬문법분할정복 백준 - 버블 소트 1517번 O(N^3)$ 알고리즘: 크기 2560인 입력까지를 1초 안에 풀 수 있습니다. 이때 25603은 대략 16억입니다. O(N^2)$ 알고리즘: 크기 40960인 입력까지를 1초 안에 풀 수 있습니다. 이때 409602은 대략 16억입니다. O(N \lg N)$ 알고리즘: 크기가 대략 2천만인 입력까지를 1초 안에 풀 수 있습니다. 이때 lg N \lg N NlgN은 대략 5억입니다. O(N)... 분할정복algorithmalgorithm