프로그래밍(주력)/백준 문제풀이(53)
-
2019.03.22) 소프트웨어 마에스트로 마지막 스퍼트 3편(탐색) - 1987, 2294 (PyPy3)
테스트 시험을 봐봤는데 다들 쉬웠다. 물론 본시험은 어렵겠지만.. 열심히 해보도록하자. 1987번 12345678910111213141516171819202122232425262728293031323334353637383940R, C = map(int, input().split(' ')) ma = list() for _ in range(R): ma.append(list(input())) visited = dict() stack = list()stack.append(((0, 0), {ma[0][0]}, 1)) result = 0while stack: (i, j), his, w = stack.pop() result = max(result, w) if i > 0: if not ma[i - 1][j] in hi..
2019.03.22 -
2019.03.21) 소프트웨어 마에스트로 마지막 스퍼트 2편(dp, 삼분탐색) - 1766, 2169, 2504, 2512, 8986 (PyPy3)
위상정렬 복습이랑 삼분탐색까지 익혔다 1766번 1234567891011121314151617181920212223242526N, M = map(int, input().split()) graph = {i: list() for i in range(1, N + 1)}count = {i: 0 for i in range(1, N + 1)} for _ in range(M): a, b = map(int, input().split()) graph[a].append(b) count[b] += 1 queue = list()for i in range(1, N + 1): if count[i] == 0: queue.append(i) result = ''for _ in range(N): queue.sort() now = que..
2019.03.21 -
2019.03.20) 소프트웨어 마에스트로 마지막 스퍼트 2편(위상정렬) - 1516, 2252, 3665 (PyPy3)
위상정렬이 어려워보여 개념을 정리해보았다. 가중치가 있는 경우는 힙으로 우선순위큐를 하고,간선만 주어지는 경우는 간단하게 큐로 구현하고(dfs)이미 순서가 있다면 그래프를 그리는 법을 알수 있었다. 1516번12345678910111213141516171819202122232425262728293031323334from heapq import heappush, heappop N = int(input()) graph = {i: list() for i in range(1, N + 1)}count = {i: 0 for i in range(1, N + 1)}time = dict() for i in range(1, N + 1): inp = list(map(int, input().split())) time[i] =..
2019.03.20 -
2019.03.19) 소프트웨어 마에스트로 마지막 스퍼트 1편 - 14442 (PyPy3)
오늘은 이상하게 알고리즘 문제가 안풀린다. 그리고 이젠 시간초를 맞추는 좀 억지스러운 코딩 보단 구현에 목적 두고 코딩할 생각이다. 12345678910111213141516171819202122232425262728293031323334353637from sys import stdinfrom collections import deque input = stdin.readline n, m, k = map(int, input().split())a = [list(input()) for _ in range(n)]dist = [[[0] * (k + 1) for _ in range(m)] for _ in range(n)]dx = (-1, 0, 1, 0)dy = (0, 1, 0, -1) def bfs(): q = d..
2019.03.19 -
2019.03.18) 선린 정올특집 1편 - 1449, 9095, 11508, 11509, 13900(PyPy3)
간단했다. 탐색같은 원리적인건 안써도 됬지만 고민할 필요는 있는 문제들이었다. 1449번 12345678910111213141516171819202122N, L = map(int, input().split(' '))li = list(map(int, input().split(' '))) li.sort() re = 0i = 0while i
2019.03.18 -
2019.03.17) 백준 최단경로 특집 6편 - 6118(PyPy3)
주말이라 조금 놀았다. 내일부턴 재학중인 선린고의 정올문제를 시험삼아 3문제씩 풀어볼것이다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748from heapq import heappop, heappush INF = 1e9 N, M = map(int, input().split(' ')) graph = {i: list() for i in range(1, N + 1)} for _ in range(M): a, b = map(int, input().split(' ')) # 왠지 순서대로 처리해야할거 같아서 힙 썼는데 필요없... heappush(graph[a], b) heappush(graph[b], a)..
2019.03.17 -
2019.03.16) 백준 최단경로 특집 5편 - 10159(PyPy3)
최적화를 안하는것 같지만 한거다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455from heapq import heappush, heappop INF = 1e9 N = int(input())M = int(input()) # 작은쪽 저장graph1 = {i: list() for i in range(1, N + 1)}# 큰쪽 저장graph2 = {i: list() for i in range(1, N + 1)} for _ in range(M): a, b = map(int, input().split(' ')) graph1[a].append(b) graph2[b].append(a..
2019.03.16 -
2019.03.15) 백준 최단경로 특집 4편 - 1238, 1389, 11403(PyPy3)
슬슬 우선순위 큐랑 플로이드 워샬도 적절할때 마구 사용할 수 있게 되었다. 1238번 12345678910111213141516171819202122232425262728293031323334353637383940414243444546from heapq import heappush, heappop INF = 1e9 N, M, X = map(int, input().split(' ')) graph = {i: dict() for i in range(1, N + 1)} for _ in range(M): a, b, c = map(int, input().split(' ')) if graph[a].get(b, False): graph[a][b] = min(graph[a][b], c) else: graph[a][b] ..
2019.03.15 -
2019.03.14) 백준 최단경로 특집 3편 - 1504, 2606(PyPy3)
컴퓨터를 바꿨더니 깃이 꼬였다..... 망할 1504번1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556from heapq import heappop, heappush INF = 1e9 N, E = map(int, input().split(' ')) graph = {i: dict() for i in range(1, N + 1)} for i in range(E): a, b, c = map(int, input().split(' ')) if graph[a].get(b, False): graph[a][b] = min(c, graph[a][b]) else: graph[a][b] =..
2019.03.14 -
2019.03.13) 백준 최단경로 특집 2편 - 11404, 1916(PyPy3)
하나는 dp로 풀엇는데 됬고 아래꺼는 우선순위 큐를 사용하니 쉽게 통과 11404번 123456789101112131415161718192021222324252627282930313233n = int(input())m = int(input()) INF = 1e9 # 그래프graph = {i: {j: INF for j in range(1, n + 1)} for i in range(1, n + 1)} for _ in range(m): a, b, c = map(int, input().split(' ')) # 똑같은 간선인 길이가 더 길어버리기~ if graph[a].get(b, False): graph[a][b] = min(graph[a][b], c) else: graph[a][b] = c # 3중 반복문으로..
2019.03.13