코딩테스트/백준 4

[백준] 2630번, 색종이 만들기

✏️ 문제 💡 최종 코드 N = int(input()) color = [list(map(int, input().split())) for _ in range(N)] blue = 0 white = 0 def solution(x, y, n): global white, blue # 시작점 설정 e_color = color[x][y] # 4분할 for i in range(x, x+n): for j in range(y, y+n): if e_color != color[i][j]: solution(x, y, n // 2) solution(x+n//2, y, n//2) solution(x, y+n//2, n//2) solution(x+n// 2, y+n//2, n//2) return if e_color == 1: blu..

[백준] 11053번, 가장 긴 증가하는 부분 수열

✏️ 문제 ✏️ 아이디어 처음에는 {10, 20, 10, 30, 20, 50}의 예시로 살펴보았을 때 중복을 제거해서 문자열 길이를 재면 되는게 아닌가라고 생각했다. 하지만 그렇게 엄청 쉬운 문제는 아니였으며 문제를 다시 파악한 결과 하나를 기준으로 뒀을때 뒤의 숫자들이 증가하면 count를 올려주는 방법으로 시도해야한다. ✓ 사용 알고리즘 - DP[동적 계획법] - 사용 이유 일반적인 재귀를 단순히 사용 시 동일한 작은 문제들이 여러 번 반복되어 비효율적인 계산 - 사용 조건 1) Overlapping Subproblems (겹치는 부분 문제) : 동일한 작은 문제들 반복 2) Optimal Substructure (최적 부분 구조) : 부분 문제의 최적 결과 값을 사용해 전체 문제의 최적 결과를 낼 ..

[백준] 11758번, CCW

✏️ 문제 💬 아이디어 처음에는 위의 방식처럼 y좌표와, 기울기만 구하면 된다고 생각을 해서 단순하게 풀리는 문제가 아닌가 생각했다. 하지만 많은 경우의 수가 나타나서 공식을 찾아보게 되었다. 위와 같이 좌표로만 구하는 것이 아닌 CCW공식을 사용하는 것이다. ✏️ CCW 공식 💡 코드 p = [] for _ in range(3): p.append(list(map(int, input().split()))) def ccw(p_1, p_2, p_3): val = (p_1[0]*p_2[1] + p_2[0]*p_3[1] + p_3[0]*p_1[1]) - (p_2[0]*p_1[1] + p_3[0]*p_2[1] + p_1[0]*p_3[1]) return val result = ccw(p[0], p[1], p[2])..

[백준] 1927번, 최소 힙

💡 최소 힙 - 최소 값을 찾아내기 위해서 완전 이진 트리를 사용하여 연산을 처리하는 자료 구조 - 부모 노드가 자식 노드보다 작거나 같다 ✓ 최소 힙 직접 구현은 아래 블로그를 참고하여 학습했다. https://velog.io/@gnwjd309/python-heap [Python] 파이썬 힙(Heap) 사용하기 Heap은 어떻게 구현하나요! velog.io ✓ heapq 모듈 - 이진 트리 기반의 최소 힙 자료구조를 제공한다. - heapq 모듈은 최소 힙(min heap)의 기능만을 동작한다. - heappush() : 힙에 원소 추가 - heappop() : 힙에서 원소 삭제 💡 문제 💡 코드 import sys import heapq n = int(sys.stdin.readline()) heap ..