[1231] 주식왕 동호 (냅색 알고리즘)
·
Coding Test/DP
1231번: 주식왕 동호 첫 줄에는 주식의 개수 C(1 ≤ C ≤ 50)과 주식 매입 및 매각을 할 기간 D(2 ≤ D ≤ 10), 초기 자금 M(1 ≤ M ≤ 200,000)이 공백으로 구분되어 주어진다. 두 번째 줄부터 C+1번째 줄까지 각 줄에는 각각 주 www.acmicpc.net 분석 [12865] 평범한 배낭 (냅색 알고리즘) 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 karla.tistory.com 풀이 import sys input=sys.stdin.readline c,d,m=map(int..
카드 짝 맞추기 (순열 permutations, BFS, DFS)
·
Coding Test/programmers
""" 1,2,3 짝을 맞춰야하는데 123,132,231,213,312,324 어떤 순서로 맞추는게 빠른지 -> 순열 구해서 인덱스 dfs 123도 어떤 1로 먼저 가야되는지 -> 2가지 경우 bfs 최솟값 출력 """ from collections import defaultdict, deque from itertools import permutations from copy import deepcopy def bfs(board, start, end): if start==end: return 0 q, visit = deque([[start[0], start[1], 0]]), {start} while q: # BFS x, y, c = q.popleft() for dx, dy in [(0,1),(0,-1),(..
뉴스 클러스터링 (문자열 리스트 합집합, 교집합, 중복 허용 다중집합)
·
Coding Test/programmers
from collections import Counter def solution(str1, str2): answer = 0 str1,str2=str1.upper(), str2.upper() a=[] for i in range(1,len(str1)): if str1[i-1].isalpha() and str1[i].isalpha(): a.append(str1[i-1]+str1[i]) b=[] for i in range(1,len(str2)): if str2[i-1].isalpha() and str2[i].isalpha(): b.append(str2[i-1]+str2[i]) if len(a)==len(b)==0: return 65536 a = Counter(a) b = Counter(b) c = list((a..
다트 게임 (구현)
·
Coding Test/programmers
def solution(dartResult): n='' temp=[] for i in range(len(dartResult)): x = dartResult[i] if x.isdecimal(): n+=x elif x.isalpha(): j=1 if x=='D': j=2 elif x=='T': j=3 temp.append(int(n)**j) n='' else: if x=='*': if len(temp)>1: temp[-2]=temp[-2]*2 temp[-1]=temp[-1]*2 elif x=='#': temp[-1]=temp[-1]*(-1) return sum(temp)
압축 (ascii_uppercase, 알파벳 딕셔너리)
·
Coding Test/programmers
from string import ascii_uppercase def solution(msg): answer = [] c = [i for i in range(1,27)] a= dict(zip(ascii_uppercase,c)) w='' for x in msg: w+=x if w not in a: a[w]=len(a)+1 answer.append(a[w[:-1]]) w = w[-1] answer.append(a[w]) return answer
실패율 (list.count() 함수)
·
Coding Test/programmers
def solution(N, stages): result = {} a = len(stages) for i in range(1,N+1): if a != 0: cnt = stages.count(i) # stages에서 i의 개수 result[i] = cnt/a a-=cnt else: result[i] = 0 return sorted(result, key=lambda x: result[x], reverse=True) def solution(N, stages): answer = [] a = [0] * (N+1) for x in stages: a[x - 1] += 1 b = {} for i in range(N): if sum(a[i:]) != 0: b[i+1]=a[i]/sum(a[i:]) else: b[i+1]=..