프로그래밍/Algorithm 105

백준 12904 A와 B

www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net S, T = [list(input()) for _ in range(2)] temp = T for i in range(len(T) - 1, -1, -1): if i + 1 == len(S): break if temp[i] == 'A': temp = temp[:i] else: temp = temp[:i] temp = temp[::-1] if temp == S: print(1) ..

백준 1461 도서관 파이썬

www.acmicpc.net/problem/1461 1461번: 도서관 첫째 줄에 책의 개수 N과, 세준이가 한 번에 들 수 있는 책의 개수 M이 주어진다. 둘째 줄에는 책의 위치가 주어진다. N은 10,000보다 작거나 같은 자연수이고, M은 10,000보다 작거나 같다. 책의 위치 www.acmicpc.net def right_move(A, zero_index, M): right_len = len(A) - (zero_index + 1) left_len = zero_index ans = 0 remain_right = right_len % M if remain_right != 0: ans+=A[zero_index+remain_right] * 2 for i in range(zero_index+remain_..

백준 1781 컵라면 파이썬

www.acmicpc.net/problem/1781 1781번: 컵라면 상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라 www.acmicpc.net import heapq import sys if __name__ == '__main__': heap = [] N = int(sys.stdin.readline().rstrip()) for _ in range(N): deadline, ramen = map(int, sys.stdin.readline().split()) heapq.heappush(heap, [-ramen, deadline]) ans = 0 flag = [0] ..

백준 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..