전체 글 473

백준 1202 보석도둑 파이썬

www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net import heapq N, K = map(int, input().split()) gem = [] for i in range(N): weight, value = map(int, input().split()) heapq.heappush(gem, [weight, value]) bag = [] for i in range(K): heapq.heappush(b..

백준 2828 사과 담기 게임 파이썬

N, M = map(int, input().split()) apple_cnt = int(input()) A = [] for i in range(apple_cnt): A.append(int(input())) ans = 0 box_pos = 1 dif = 0 for i in range(len(A)): apple_pos = A[i] if apple_pos < box_pos: dif= abs(box_pos - apple_pos) box_pos-= dif ans+=dif elif box_pos + M - 1 < apple_pos: dif= abs(box_pos + M - 1 - apple_pos) box_pos+=dif ans+=dif print(ans) 엄청 쉬운 문제인데, 정신이 산만해서 그런가.. 집중이 잘..

이코테 볼링공고르기 파이썬

N, M = map(int, input().split()) balls = list(map(int,input().split())) ball_count_per_weight = [0] * 11 for ball in balls: ball_count_per_weight[ball]+=1 result = 0 for i in range(1, len(ball_count_per_weight)): N-= ball_count_per_weight[i] result+=ball_count_per_weight[i] * N print(result) # 8 5 # 1 5 4 3 2 4 5 2 이 문제의 조건은 1. A와 B 두명이 서로 다른 무게의 볼링공을 골라야하며, 2. 같은 무게의 공이 여러개 있더라도 다른 공이므로 다시 고를수 ..

백준 1748 수 이어 쓰기 1 파이썬

www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net N = int(input()) nines = [int('9'+('0'*i)) for i in range(0, len(str(N)))] ans = 0 for i,v in enumerate(nines): if i+1 == len(nines): ans+=len(str(v)) * (N - sum(nines[:-1])) else: i+=1 ans+=i*v print(ans) 좀 당황스러웠다. 얼추 비슷하게까지는 생각했는데 생각을 이어나가지를 못하겠더라. 결국 다른분 블로그 참고하고나서야 생각을 할수있게되었다. 음.. 답답하군...

백준 14500 테트로미노 파이썬

www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net N, M = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(N)] tetro1_1 = [[0,0], [0,1], [0,2], [0,3]] tetro1_2 = [[0,0], [1,0], [2,0], [3,0]] tetro1 = [tetro1_1, tetro1_2] tetro2_1 = [[0,0], [0,1], [1..

백준 8980 택배 파이썬

www.acmicpc.net/problem/8980 8980번: 택배 입력의 첫 줄은 마을 수 N과 트럭의 용량 C가 빈칸을 사이에 두고 주어진다. N은 2이상 2,000이하 정수이고, C는 1이상 10,000이하 정수이다. 다음 줄에, 보내는 박스 정보의 개수 M이 주어진다. M은 1이 www.acmicpc.net n,c = 4,10 m = 3 box = [[1,4,10],[2,3,10],[3,4,10]] box.sort(key=lambda x: x[1]) print(box) truck_capa = [c] * (m + 1) ans = 0 for i in range(m): temp = c # 목적지까지 거쳐가는 마을 중 적재량이 가장 작은 적재량을 선택 for j in range(box[i][0], bo..

백준 1107 리모컨 파이썬

www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net # 희망채널 N = int(input()) # 고장난 버튼수 M = int(input()) # 0-9 까지 버튼을 가지고 있는 리모컨 remote_controller = {str(i) for i in range(10)} if M > 0: # 고장난 버튼은 리모컨에서 제거 remote_controller-=set(map(str, input().split())) # 현재 보고 있는 채널 curren..

백준 1476 날짜계산 파이썬

www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 브루트포스 매우순한맛이긴한데.. 나는 이 문제가 무척 당황스러웠다. 아니.. 1 2 3 일때 5266년인데.. 이걸 어떻게 풀어야하나.. 최대공약수, 최소공배수를 적용해야하는거같아서 머리로 온통 생각했지만 감이 안올라서 결국 또 검색했다. 다른 블로그 서문을 보는 순간, 아.. 하고 바로 구현에 들어갔다. 무식하게 생각하는게 생각보다 쉽지 않다는걸 깨달은 문제다. 일단은 무식하게 먼저 생각해보자. E, S, M = ..

백준 1037 약수 파이썬

www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net from math import gcd N = int(input()) A = list(map(int, input().split())) ans = A[0] * A[1] // gcd(A[0], A[1]) for i in range(2, N): ans = ans * A[i] // gcd(ans, A[i]) #if ans in A: # ans*=2 print(ans) 처음엔 최소공배수 문제라고 생각하고 위와 같이..

백준 일곱난쟁이 파이썬

www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net A = [int(input()) for _ in range(9)] over_num = sum(A) - 100 A.sort() a, b = -1,-1 for i in range(9): if a != -1: break temp1 = A[i] for j in range(i+1, 9): temp2 = A[j] if temp1 + temp2 == over_num: a, b = i, j break for i in range(len..