728x90
반응형

시간복잡도 2

[백준 20922 / Python / 실버1] 겹치는 건 싫어

슬라이딩 윈도우 or 투 포인터 문제이다. 나는 슬라이딩 윈도우가 익숙하고 더 직관적이라고 생각해서, 슬라이딩 윈도우 방식으로 풀었다. from collections import defaultdictimport sysinput = sys.stdin.readline"""최장 연속 부분 수열 길이 구하기같은 정수는 K개 까지 허용N: 제공된 수열 길이K: 같은 정수 허용 상한nums: 제공된 수열num_count: 각 숫자 당 개수 세는 딕셔너리, 기본값 int슬라이딩 윈도우딕셔너리 구조 -> 숫자: 개수-> 특정 숫자가 K개가 넘었다면, left는 특정 숫자 위치까지 진행하며 딕셔너리에서 값을 빼고 right는 right + 1 부분부터 다시 진행한다"""N, K = map(int, inp..

[백준 2512 / Python / 실버2] 예산

주어진 예산 안에서 요청받은 금액을 배정해 주어야 한다.예산이 충분하다면 요청받은 대로 전부 다 주면 되지만, 예산이 부족하다면 상한가를 정해서 최대한 많은 예산을 배분해야 한다.즉 상한가를 정하고, 모든 예산을 전부 소모한다면 최적의 해다. import sysinput = sys.stdin.readline"""1. 모든 요청을 줄 수 있다면 다 준다2. 상한액을 정해서, 상한액 이상인 요청엔 상한액만 준다. 상한액 이하의 요청은 그대로 준다"""N = int(input())reqs = list(map(int, input().split()))budget = int(input())def calc(limit, arr): """ 상한가를 고려해, 지급해야 할 금액 계산 limit: 상한가 ..

728x90
반응형