본문 바로가기

Dev/Algorithm15

75. [TIL] 오늘의 배움일지 ( 21-09-17 ) 1. 냅색 문제 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 풀이를 먼저 이해하고, 다시 내가 짜보는 방식을 써봤더니 이해도 되고, 풀이도 되었다. 장기기억으로 넘어갈지는 아직 모르겠다. 2. 회의실 배정 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.. 2021. 9. 17.
15. [알고리즘] 정다면체 내 생각 defaultdict를 사용하는게 핵심. 해시를 생각했다. 구현 import collections n,m = map(int,input().split()) di = collections.defaultdict(int) for i in range(1,n+1): for j in range(1,m+1): di[i+j] += 1 max_value = max(di.values()) res = [] for d in di.items(): if d[1] == max_value: res.append(d[0]) res = list(map(str,res)) print(" ".join(res))다른사람 생각 리스트를 사용했다. 배열 크기를 잘 정하는게 핵심인듯 구현 n,m = map(int,input().split()).. 2021. 5. 2.
14. [알고리즘] K번째 큰 수 내 생각 콤비네이션을 이용해야겠다고 생각했음 리스트의 3개 뽑은 콤비네이션을 구함 합을 계산해서 다른 리스트에 넣음 ~번째 == idx-1 구현 #K번째 큰 수 from itertools import combinations n,k = map(int,input().split()) arr = list(map(int,input().split())) combi = combinations(arr,3) ar = [] for c in combi: ar.append(sum(c)) ar.sort(reverse=True) print(ar) ar = list(set(ar)) # 간과했던 부분 ar.sort(reverse=True) print(ar) print(ar[k-1]) 다른사람 생각 삼중포문을 사용할 생각을 했음 여기.. 2021. 4. 29.
13. [알고리즘] K번째 작은 수 내 생각 0. 첨에 먼소린가 했다. 두번째줄 첫 번째 숫자는 그 다음줄에 나올 배열의 갯수였다. 1. 인풋 입력 받는다 2. 문자열 슬라이싱 3. 정렬 4. 인덱스 리턴 풀이 #K번째 수 T = int(input()) for t in range(int(T)): a,s,e,k = map(int,input().split()) arr = list(map(int,input().split())) test = (arr[s-1:e]) test.sort() print(test[k-1]) 다른사람 생각,풀이 나와 일치했음 2021. 4. 29.