썸네일 [백준] 18111번 : 마인크래프트 (브루트포스 알고리즘)- 파이썬[Python] 문제 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 풀이 import sys N,M,B = map(int,sys.stdin.readline().split()) list1=[] solve=[] for i in range(N): list1+=(map(int,sys.stdin.readline().split())) for i in range(min(list1),max(list1)+1): bag=B sec=0 for ground in list1: if (ground-i)>0: #1번작업 bag+=(ground-i) ..
썸네일 [백준] 13305번 : 주유소(탐욕 알고리즘)- 파이썬[Python] 문제 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 풀이 import sys N=int(sys.stdin.readline()) distance=list(map(int,sys.stdin.readline().split())) oil=list(map(int,sys.stdin.readline().split())) solve=0 best_oil=oil.index(min(oil)) #첫번째 solve+=oil[0]*distance[0] for i in range(1,len(oil)-1): if oil[i]..
썸네일 [백준] 1541번 : 잃어버린 괄호(탐욕 알고리즘)- 파이썬[Python] 문제 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 풀이 n=input().split('-') list1=[] for i in range(len(n)): n2=list(map(int,n[i].split('+'))) list1.append(sum(n2)) solve=list1[0] for i in range(1,len(list1)): solve-=list1[i] print(solve) 문자열 파싱하는 것이 중요한 문제이다. 우선 split('-')으로 문자열을 자르고 리스트를 확인하면, 어떤 식으로 풀어..
썸네일 [백준] 1931번 : 회의실배정(탐욕 알고리즘)- 파이썬[Python] 문제 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 import sys N=int(sys.stdin.readline()) N_list=[] #회의실 시간 리스트 S_list=[] #가능한 회의 추가하는 리스트 for i in range(N): N_list.append(list(map(int,sys.stdin.readline().split()))) N_list=sorted(N_list, key= lambda x: (x[1],x[0],x[1]-x[0])) #끝나는 시간, 시작 시간, 걸리는 시간 순으로 정렬 for i in range(len(N_list)): if len(S_list)==0: #첫 회의일 경우 S_list..
썸네일 [백준] 11399번 : ATM(탐욕 알고리즘)- 파이썬[Python] 문제 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 풀이 import sys N=int(sys.stdin.readline()) N_list=list(map(int,sys.stdin.readline().split())) N_list.sort() #오름차순 정렬 nn=0 #누적 계산용 solve=0 #답 출력용 for i in N_list: nn+=i solve+=nn print(solve) 탐욕 알고리즘을 활용한 문제이다. 시간이 덜 걸리는 순서대로 줄을 세워야 필요한 시간이 최소값이 된다. 줄을 서는 순서에 따라 걸리는 시간을 오름차순으로..
썸네일 [백준] 10989번 : 수 정렬하기 3- 파이썬[Python] 문제 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 import sys N=int(sys.stdin.readline()) num=[0]*10001 for i in range(N): num[int(sys.stdin.readline())]+=1 for i in range(len(num)): if num[i]!=0: for p in range(num[i]): print(i) list.append를 사용하면 추가할 때마다 메모리 재할당이 이루어 져서 메모리를 크게 사용한다고 한다. 입력값 제한점인 10001개의 공간을 가진 lis..
썸네일 [백준] 10816번 : 숫자 카드 2(counter)- 파이썬[Python] 문제 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 풀이 import sys from collections import Counter M=int(sys.stdin.readline()) list1=list(map(int,sys.stdin.readline().split())) N=int(sys.stdin.readline()) list2=list(map(int,sys.stdin.readline().split())) c= Counter(list1) for i in list2: if ..
썸네일 [백준] 10814번 : 나이순 정렬(sort 함수 key)- 파이썬[Python] 문제 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 import sys N=int(sys.stdin.readline()) list1=[] for i in range(N): list1.append(list(sys.stdin.readline().split())) list1.sort(key=lambda x:int(x[0])) for i in range(len(list1)): print(list1[i][0],list1[i][1]) 리스트의 sort 함수는 리스트의 원소를 오름 차순으로 정렬하는 기능을 갖고있다. 여기..
썸네일 [백준] 2108번 : 통계학(counter)- 파이썬[Python] 문제 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 from collections import Counter import sys N=int(sys.stdin.readline()) list1=[] for i in range(N): list1.append(int(sys.stdin.readline())) list1.sort() print(round(sum(list1)/len(list1))) print(list1[len(list1)//2]) c_n=Counter(list1).most_common() if len(c_n)>1..
썸네일 [백준] 5430번 : AC(덱)- 파이썬[Python] 문제 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 풀이 import sys from collections import deque t=int(sys.stdin.readline()) for _ in range(t): p=sys.stdin.readline() n=int(sys.stdin.readline()) que = deque(sys.stdin.readline().rstrip()[1:-1].split(',')) r_check=0 #R 홀수 짝수 측정 try: for i in p: if i=='R': r_check+=1 elif i=='D' and n==0: que...