목록알고리즘 PS (108)
DevKim
www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net #import sys #input = sys.stdin.readline t=int(input()) list=[] p=0 for i in range(t): del list[:] cnt=0 n=int(input()) for j in range(n): a,b=map(int,input().split()) list.append([a,b]) list=sorted(list,key=lambda x:x[0..
www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net k=input() ans=0 k=k.split('-') for i in k[0].split('+'): ans+=int(i) for i in k[1:]: p=0 for j in i.split('+'): p+=int(j) ans-=p print(ans)
www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 생각을 많이 할수록 코드가 짧아지는 그리디 k=int(input()) list=[] result=[] for i in range(k): list.append(int(input())) list.sort(reverse=True) for i in range(k): result.append(list[i]*(i+1)) print(max(result))
www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 그리디 알고리즘. n=int(input()) t_list=[] cnt=0 for i in range(n): meet=list(map(int,input().split())) t_list.append(meet) t_list=sorted(t_list,key=lambda x:x[0]) t_list=sorted(t_list,key=lambda x:x[1]) end=0 for i,j in t_list: if(i>=end): cnt+=1 end=j print(cnt)
www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net n,k=map(int,input().split()) money=[int(input()) for _ in range(n)] money.sort(reverse=True) cnt=0 for i in money: if(i>k): continue elif(i==k): cnt+=1 break else: cnt+=k//i k=k%i if(k==0): break..
www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 그리디알고리즘으로 분류되어있는 문제.! 그리디 알고리즘은 현명하게 풀어낼 수록 코드가 짧아진다고 생각한다 n=int(input()) box=0 while(1): if(n%5==0): n=n-5 box+=1 else: n=n-3 box+=1 if(n
www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 처음부터 반례까지 모두 찾아내고, 한번에 '성공!'을 받아내는걸 목표로 하고 있는 요즘. 문제 완벽하게 이해하고 반례를 찾아내는게 키포인트다. 꼼꼼하게 집중해서.! DFS로 한번에 해결~ from collections import deque que=deque() dx=[-1,1,0,0] dy=[0,0,-1,1] result=[] t=int(input()) for i in range(t): #테스트 케이스 cnt=0 #배추 ..
www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 정답률이 44%인걸보니 쉬운 문제이구나 생각했다. 토마토 문제를 풀고 푸니 너무 쉬웠다.! 10분만에 풀었다 n=int(input()) m=int(input()) graph={i:[] for i in range(1,n+1)} for i in range(m): x,y=map(int,input().split()) graph[x].append(y) graph[y].append(x) for key in graph: grap..