알고리즘
-
[BOJ 2014]소수의 곱알고리즘 2021. 1. 1. 22:36
www.acmicpc.net/problem/2014 [푼 방법] 우선순위 큐 가장 최소인 값에 대해서 주어진 소수를 곱해서 다시 push하는 것을 반복한다. ex> 2,3,5,7-->2 pop -->2*2,2*3,2*5,2*7을 다시 push..--> 다시 pop 요러케..! 단, 같은 값이 계속 들어가는 것을 막기위해 나는 소수 오름차순으로 곱하도록 하고싶었다. 그래서 tuple로 곱한 수에 대한 정보를 같이 넣어서 반복이 없도록 진행했다. from heapq import heappush,heappop def solution(N,arr): q1=[] for i in arr: heappush(q1,(i,i))#1이 곱해졋다고 가정 count=0 while count=x: heappush(q1,(x*val..
-
[Greedy]2812알고리즘 2020. 11. 8. 22:34
n,m=map(int,input().split(' ')) x_l=(list(map(int,input()))) #자릿수 : n-m before=0 max_val=0 s='' temp_s=[] cur_p=n-m for idx,i in enumerate(x_l): tt=min((n-m),len(x_l)-idx) if tt!=cur_p: s+=str(temp_s.pop(0)) cur_p=tt while True: if len(temp_s)==0: temp_s.append(i) break if i>temp_s[-1]: temp_s.pop() else: temp_s.append(i) break if len(list(s))!=n-m: s+=str(temp_s.pop(0)) print(s) else: print(s) ..
-
[DP]2156알고리즘 2020. 11. 5. 20:23
def solution(g): for i in range(1,len(g)): print(i) if i==1: answer[1]=g[1] if i==2: answer[2]=g[1]+g[2] else: answer[i]=max(g[i]+answer[i-2],g[i]+g[i-1]+answer[i-3],answer[i-1]) print(answer) return max(answer) num=int(input()) g=[0] for i in range(num): g.append(int(input())) if len(g)==2: print(g[1]) else: answer=[0]*(len(g)) print(solution(g))
-
[DFS]1987알고리즘 2020. 11. 5. 13:49
import sys max_val=0 # in 의 문제일 확률이 높음 def solution(cur,xx,m): global max_val if cur[0]-1>=0: if xx[ord(g[cur[0]-1][cur[1]])-65]==0: xx[ord(g[cur[0]-1][cur[1]])-65]=1 solution((cur[0]-1,cur[1]),xx,m+1) xx[ord(g[cur[0]-1][cur[1]])-65]=0 if cur[0]+1=0: if xx[ord(g[cur[0]][cur[1]-1])-65]==0: xx[ord(g[cur[0]][cur[1]-1])-65]=1 solution((cur[0],cur[1]-1),xx,m+1) xx[ord(g[cur[0]][cur[1]-1])-65]=0 if cu..
-
[DP]1915알고리즘 2020. 10. 31. 22:29
1번째 풀이 : (느림../ 간단한 DP) n,m=map(int,input().split(' ')) g=[] cand=[] for i in range(n): temp=list(map(int,list(input()))) for idx,j in enumerate(temp): if j==1: cand.append((i,idx)) g.append(temp) max_val=0 for i in range(n-1,-1,-1): for j in range(m-1,-1,-1): if g[i][j]==1: if i+1>=n or j+1>=m: if g[i][j]>max_val: max_val=g[i][j] pass else: g[i][j]=min(g[i+1][j],g[i][j+1],g[i+1][j+1])+1 if g[i]..