분할정복 [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(전위 순회)를 구하는 문제 입니다. 그렇기 때문에 중위 순회의 결과는 루트 노드를 기준으로 왼쪽 자식 노드의 결과 리스트 -> 루트 노드 값 -> 오른쪽 자식 노드의 결과 리스트 순으로 출력됩니다. 왼쪽 -> 오른쪽 자식 노드를 탐색한 다음, 마지막으로 루트 노드의 데이터를 탐... 순회트리코딩테스트분할정복분할정복 백준 2447 : 별 찍기 - 10 1. 접근 재귀를 사용하여 구하라고 했으므로, 분할정복으로 접근한다. N 전체를 표현하기 위해서는 결국 3의 제곱수일때의 패턴들이 반복된다. N을 계속 3으로 나누고 N*N 에서 가운데를 비우는 과정들을 반복해야 한다. 앞선 문제들과는 다르게, 가장 작은 크기는 3*3 모양이므로 크기가 3보다 작아질때까지 반복한다. (앞선 문제에서는 모두 일치하지 않는 등의 조건에 따라 반복하고, 모두 확인... cpp분할정복cpp BOJ1780 종이의 개수 문제 실버II | 백준 1780 | Python3 파이썬 풀이 알고리즘 문제와 매우 유사하다. ( ) 색종이 만들기는 4등분하지만, 이 문제는 9등분한다. 종이를 9개의 정사각형 그룹으로 나눈 뒤, 각 그룹이 모두 같은 값이라면 그 종이는 쓸 수 있는 종이이므로 그 값에 따른 개수를 기록한다. 만약 종이의 크기가 1x1까지 왔다면 더 이상 자를 수 없으므로 그 종이의 값에 따른 개수를 기록한... 재귀분할정복분할정복 [Algorithm] 🏠울타리 잘라내기 0. 문제 너비가 같고 높이가 다른 판자들이 붙어서 울타리를 구성하고 있을 때, 울타리에서 잘라 가장 큰 직사각형을 만들어라 입력 테스트 케이스(C) 나무 판자의 숫자 나무 판자의 각 높이 출력 가장 큰 직사각형의 넓이 1. 문제 간단 해석 붙어있는 판자에서 자를 수 있는 가장 큰 직사각형의 넓이를 구해라 2. 아이디어 💡 총 3가지 경우가 가능함 1) 반절을 잘랐을 때 왼쪽 부분에서의 직사... 종만북algospot분할정복algospot #1780번: 종이의 개수 문제 쿼드트리 문제와 매우 유사하지만, 요소들이 3의 배수가 된 점이 다르다. -1, 0, 1의 세 가지 값을 가지며, 종이 또한 3의 제곱수의 크기를 가진다. (1 ≤ N ≤ 3^7) 풀이 색종이 문제에서는 2의 7승 사이즈까지 1초 안에 해결했지만, 분할할 영역이 한 단계를 거칠 때 4배가 되는 거에서 9배가 되는 것으로 변경되었으므로, 시간제한 또한 1초 증가했다. 때문에 분할정복 알고... pythonboj분할정복boj [AlgoSpot] fence.py python분할정복FENCEFENCE [ BOJ / C++ ] 2448번 별 찍기 - 11 이번 문제는 분할 정복으로 해결하였다. 전에 풀어보았던 별 찍기보다 복잡한 형태의 문제여서 고민을 많이 했다. 출력되는 별이 많으므로 2차원 배열에 저장하기로 하였다. n의 범위가 3x2^10까지이므로 3072까지 가능하다. 예제 출력을 자세히 보면 가장 위에 별이 가로축에서 n번째에 위치하는 것을 알 수 있으므로 MAX를 (3027+1)*2로 정의해준다. 별을 담는 star배열은 star[... DivideAndConquercppboj분할정복DivideAndConquer [Python] 프로그래머스(Lv3) - 3주차_ 퍼즐 조각 채우기 안녕하세요 :) 풀이 문제가 복잡하기 때문에 분할정복으로 나눠서 생각해봅시다 ! 이 문제를 간단히 정의해보자면, 퍼즐을 찾고 table의 빈 공간에 적절히 올려 놓는 것입니다. 이를 위해 해야하는 행동은 크게 두가지 입니다. 1. 퍼즐을 찾는 것 2. 퍼즐을 테이블에 매치 시키는 것 1번 행위를 하기 위해서는 세부적인 함수들이 다음과 같이 필요합니다. 1) 퍼즐을 찾는 것은 bfs로 구현할 ... 코딩테스트python분할정복python BOJ : 2630 색종이 만들기 주어진 종이를 일정한 규칙에 따라 잘라서 다양한 크기를 가진 정사각형 모양의 하얀색 또는 파란색 색종이를 만들려고 한다. 전체 종이가 모두 같은 색으로 칠해져 있지 않으면 가로와 세로로 중간 부분을 잘라서 <그림 2>의 I, II, III, IV와 같이 똑같은 크기의 네 개의 N/2 × N/2색종이로 나눈다. 나누어진 종이 I, II, III, IV 각각에 대해서도 앞에서와 마찬가지로 모두 ... boj분할정복알고리즘boj [Baekjoon] - 2630. 색종이 만들기(S3) 아래 <그림 1>과 같이 여러개의 정사각형칸들로 이루어진 정사각형 모양의 종이가 주어져 있고, 각 정사각형들은 하얀색으로 칠해져 있거나 파란색으로 칠해져 있다. 주어진 종이를 일정한 규칙에 따라 잘라서 다양한 크기를 가진 정사각형 모양의 하얀색 또는 파란색 색종이를 만들려고 한다. 전체 종이가 모두 같은 색으로 칠해져 있지 않으면 가로와 세로로 중간 부분을 잘라서 <그림 2>의 I, II, ... 분할정복algorithmbaekjoon재귀algorithm 백준 - 색종이 만들기 2630번 분할정복algorithmalgorithm [python] 백준 6549 : 히스토그램에서 가장 큰 직사각형 문제 링크 접근 주어진 n은 10만이고, 각 직사각형의 최대 높이는 10억이다. (높이로 뭐 할 생각 하지말자...) 시간 복잡도는 O(n^2) 보다는 좋아야 할 것이므로 분할하여 탐색하는 것을 생각했다. 문제를 보면 연속된 직사각형들의 넓이를 미리 구해놓는 작업을 하면 편해보인다. 따라서 세그먼트 트리를 이용한 접근을 생각했다. 풀이 이 문제에서 가장 큰 직사각형을 구하는 알고리즘은 다음과... 알고리즘세그먼트트리백준파이썬분할정복백준
[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(전위 순회)를 구하는 문제 입니다. 그렇기 때문에 중위 순회의 결과는 루트 노드를 기준으로 왼쪽 자식 노드의 결과 리스트 -> 루트 노드 값 -> 오른쪽 자식 노드의 결과 리스트 순으로 출력됩니다. 왼쪽 -> 오른쪽 자식 노드를 탐색한 다음, 마지막으로 루트 노드의 데이터를 탐... 순회트리코딩테스트분할정복분할정복 백준 2447 : 별 찍기 - 10 1. 접근 재귀를 사용하여 구하라고 했으므로, 분할정복으로 접근한다. N 전체를 표현하기 위해서는 결국 3의 제곱수일때의 패턴들이 반복된다. N을 계속 3으로 나누고 N*N 에서 가운데를 비우는 과정들을 반복해야 한다. 앞선 문제들과는 다르게, 가장 작은 크기는 3*3 모양이므로 크기가 3보다 작아질때까지 반복한다. (앞선 문제에서는 모두 일치하지 않는 등의 조건에 따라 반복하고, 모두 확인... cpp분할정복cpp BOJ1780 종이의 개수 문제 실버II | 백준 1780 | Python3 파이썬 풀이 알고리즘 문제와 매우 유사하다. ( ) 색종이 만들기는 4등분하지만, 이 문제는 9등분한다. 종이를 9개의 정사각형 그룹으로 나눈 뒤, 각 그룹이 모두 같은 값이라면 그 종이는 쓸 수 있는 종이이므로 그 값에 따른 개수를 기록한다. 만약 종이의 크기가 1x1까지 왔다면 더 이상 자를 수 없으므로 그 종이의 값에 따른 개수를 기록한... 재귀분할정복분할정복 [Algorithm] 🏠울타리 잘라내기 0. 문제 너비가 같고 높이가 다른 판자들이 붙어서 울타리를 구성하고 있을 때, 울타리에서 잘라 가장 큰 직사각형을 만들어라 입력 테스트 케이스(C) 나무 판자의 숫자 나무 판자의 각 높이 출력 가장 큰 직사각형의 넓이 1. 문제 간단 해석 붙어있는 판자에서 자를 수 있는 가장 큰 직사각형의 넓이를 구해라 2. 아이디어 💡 총 3가지 경우가 가능함 1) 반절을 잘랐을 때 왼쪽 부분에서의 직사... 종만북algospot분할정복algospot #1780번: 종이의 개수 문제 쿼드트리 문제와 매우 유사하지만, 요소들이 3의 배수가 된 점이 다르다. -1, 0, 1의 세 가지 값을 가지며, 종이 또한 3의 제곱수의 크기를 가진다. (1 ≤ N ≤ 3^7) 풀이 색종이 문제에서는 2의 7승 사이즈까지 1초 안에 해결했지만, 분할할 영역이 한 단계를 거칠 때 4배가 되는 거에서 9배가 되는 것으로 변경되었으므로, 시간제한 또한 1초 증가했다. 때문에 분할정복 알고... pythonboj분할정복boj [AlgoSpot] fence.py python분할정복FENCEFENCE [ BOJ / C++ ] 2448번 별 찍기 - 11 이번 문제는 분할 정복으로 해결하였다. 전에 풀어보았던 별 찍기보다 복잡한 형태의 문제여서 고민을 많이 했다. 출력되는 별이 많으므로 2차원 배열에 저장하기로 하였다. n의 범위가 3x2^10까지이므로 3072까지 가능하다. 예제 출력을 자세히 보면 가장 위에 별이 가로축에서 n번째에 위치하는 것을 알 수 있으므로 MAX를 (3027+1)*2로 정의해준다. 별을 담는 star배열은 star[... DivideAndConquercppboj분할정복DivideAndConquer [Python] 프로그래머스(Lv3) - 3주차_ 퍼즐 조각 채우기 안녕하세요 :) 풀이 문제가 복잡하기 때문에 분할정복으로 나눠서 생각해봅시다 ! 이 문제를 간단히 정의해보자면, 퍼즐을 찾고 table의 빈 공간에 적절히 올려 놓는 것입니다. 이를 위해 해야하는 행동은 크게 두가지 입니다. 1. 퍼즐을 찾는 것 2. 퍼즐을 테이블에 매치 시키는 것 1번 행위를 하기 위해서는 세부적인 함수들이 다음과 같이 필요합니다. 1) 퍼즐을 찾는 것은 bfs로 구현할 ... 코딩테스트python분할정복python BOJ : 2630 색종이 만들기 주어진 종이를 일정한 규칙에 따라 잘라서 다양한 크기를 가진 정사각형 모양의 하얀색 또는 파란색 색종이를 만들려고 한다. 전체 종이가 모두 같은 색으로 칠해져 있지 않으면 가로와 세로로 중간 부분을 잘라서 <그림 2>의 I, II, III, IV와 같이 똑같은 크기의 네 개의 N/2 × N/2색종이로 나눈다. 나누어진 종이 I, II, III, IV 각각에 대해서도 앞에서와 마찬가지로 모두 ... boj분할정복알고리즘boj [Baekjoon] - 2630. 색종이 만들기(S3) 아래 <그림 1>과 같이 여러개의 정사각형칸들로 이루어진 정사각형 모양의 종이가 주어져 있고, 각 정사각형들은 하얀색으로 칠해져 있거나 파란색으로 칠해져 있다. 주어진 종이를 일정한 규칙에 따라 잘라서 다양한 크기를 가진 정사각형 모양의 하얀색 또는 파란색 색종이를 만들려고 한다. 전체 종이가 모두 같은 색으로 칠해져 있지 않으면 가로와 세로로 중간 부분을 잘라서 <그림 2>의 I, II, ... 분할정복algorithmbaekjoon재귀algorithm 백준 - 색종이 만들기 2630번 분할정복algorithmalgorithm [python] 백준 6549 : 히스토그램에서 가장 큰 직사각형 문제 링크 접근 주어진 n은 10만이고, 각 직사각형의 최대 높이는 10억이다. (높이로 뭐 할 생각 하지말자...) 시간 복잡도는 O(n^2) 보다는 좋아야 할 것이므로 분할하여 탐색하는 것을 생각했다. 문제를 보면 연속된 직사각형들의 넓이를 미리 구해놓는 작업을 하면 편해보인다. 따라서 세그먼트 트리를 이용한 접근을 생각했다. 풀이 이 문제에서 가장 큰 직사각형을 구하는 알고리즘은 다음과... 알고리즘세그먼트트리백준파이썬분할정복백준