본문 바로가기

Problem-solving119

백준 - 카드 구매하기(11052번) (Python3) https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net """ 백준 11052 카드 구매하기 카드 1개가 포함된 카드팩, 카드 2개가 포함된 카드팩, ... 카드 N개가 포함된 카드팩과 같이 총 N 가지가 존재 i = 카드팩에 있는 카드의 개수 Pi = i개의 카드가 들어있는 카드팩의 가격 N개의 카드를 구매하기 위해 지불해야 하는 금액의 최댓값은? """ # (1 ≤ N ≤ 1,000) N = int(input()) ''' index = 카드팩에 있는 카드.. 2020. 5. 14.
동적 계획법(Dynamic programming) 함수의 결과값을 저장해 놓는다. 동일한 함수 중복 호출 방지용. 저장해 놓은 결과값 재사용으로 불필요한 함수의 중복 호출 제거. 2020. 5. 14.
백준 - 쿼드트리(1992번) (Python3) ''' 영상의 가로, 세로를 반으로 쪼갠다. 즉, 4등분을 한다. 한 점 단위까지 등분을 반복한다. 등분된 각 부분에 대해서, 압축(병합)을 시도한다. 각 압축결과가 0이나 1로 모두 동일하면, 등분 전의 부분에 대한 압축 결과는 해당 압축결과 값이다. 모두 동일하지 않다면, '(왼쪽 위 압축 결과, 오른쪽 위 압축 결과, 왼쪽 아래 압축 결과, 오른쪽 아래 압축 결과)'가 등분 전 부분에 대한 압축 결과가 된다. ''' N = int(input()) input_video = [] for _ in range(N): line = input() input_video.append(line) def solution(size, col_start_index, col_end_index, row_start_index,.. 2020. 5. 14.
분할 정복(Divide and Conquer) 문제를 반으로 쪼개고, 또 다시 반으로 쪼개고 반복.. 가장 작은 단위까지 쪼갠다. 쪼개진 문제들을 해결하면서 원래의 문제까지 다시 합쳐나간다. 재귀 호출 사용. 일반적 재귀 호출과 다른 점 일반적 재귀 호출 : (한 조각 + 나머지 전체)의 형태로 나눔 분할 정복 : (반 + 반)의 형태로 나눔 짝수 개의 문제인 경우 : (반 + 반)으로 나눔. 홀수 개의 문제인 경우 : (짝수 개의 문제 + 한 문제)로 일단 나누어 놓고, 짝수 개의 문제를 반으로 나눔. (반에 가까운 짝수 개의 문제 + 반에 가까운 홀수 개의 문제)로 나누면 중복 계산이 많아짐. 2020. 5. 14.