ALL(147)
-
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 -
2019.03.12) 백준 최단경로 특집 1편 - 1753(PyPy3)
우선순위 큐 사용했다.파이썬한테 불리한 문제라 혼났다.12345678910111213141516171819202122232425262728293031323334353637from heapq import heappush, heappop V, E = map(int, input().split(' ')) K = int(input()) graph = {i: list() for i in range(1, V + 1)} for i in range(E): u, v, w = map(int, input().split(' ')) graph[u].append((v, w)) # 무한대를 이렇게 구현해보았다.check = {i: 'INF' for i in range(1, V + 1)}check[K] = 0pq = list()hea..
2019.03.12 -
2019.03.11) 백준 dfs 특집 3편 - 11724, 2468(PyPy3)
dfs. 재밌다 해결하는 방법을 생각하고 짜면 바로 성공해서 맛이 난다. 11724번 1234567891011121314151617181920212223242526272829c, n = map(int, input().split(' '))# 그래프 제작graph = {i: list() for i in range(1, c + 1)} for i in range(n): a, b = map(int, input().split(' ')) graph[a].append(b) graph[b].append(a) visited = [False for i in range(c + 1)]count = 0 # 모든 정점을 순환for j in range(1, c + 1): # 물론 방문하지 않은 경우만 if not visited[j]..
2019.03.11 -
2019.03.10) 백준 이진탐색 마지막 - 1920 (PyPy3)
소마 면접도 있고 하고싶은 일도 있어서 날먹했습니다.. 123456789101112131415161718192021222324252627282930313233343536373839404142l_len = int(input())l = list(map(int, input().split(' ')))l.sort() # 이분 탐색def search(h): # 맨 왼쪽은 0 left = 0 # 맨 오른쪽은 끝값 right = l_len - 1 # 중간 mid = (left + right) // 2 result = 0 while True: # 만약 중간값이 구할 값이면 if l[mid] == h: # 1 리턴 result = 1 break # 만약 중간값이 구해야하는 값보다 작으면 elif l[mid] h: # 중간..
2019.03.10 -
2019.03.09) 백준 주제가 섞여버렸.. - 1300, 2805 (PyPy3)
이번엔 문제가 좀 재밌었다. 풀이대로 푸니까 풀려서 좀 성취감이 든다고 해야하나.그리고 이진탐색은 초기값을 잘설정해줘야 한다. 제로디비전이 많이 뜨는 주제중 하나. 1654번1234567891011121314151617181920212223242526c, n = map(int, input().split(' '))l = [int(input()) for i in range(c)]l.sort() # 1 이하로 자르면 큰일남 100% 런타임에러가 이 이유left = 1right = l[-1]re = 0# 이분탐색 시작while left 0 and not visited[j][i - 1] and l[j][i - 1] == 0: stack.append((j, i - 1)) if j
2019.03.09 -
2019.03.08) 백준 이분탐색 특집 2편 -1300, 2805 (PyPy3)
이분탐색은 이상한데도. 쓰일수가 있구나를 알았다 1300번 1234567891011121314151617181920c = int(input())h = int(input()) left = 1right = h while right >= left: count = 0 mid = (left + right) // 2 # 최소 높이만큼 더하기 for i in range(1, c + 1): count += min(mid // i, c) if count
2019.03.08 -
2019.03.07) 백준 이분탐색 특집 1편 -10815 (PyPy3)
이분탐색은 정렬을 하고 탐색한다는 것에서 좀 인간답다. 1234567891011121314151617181920212223242526272829303132333435363738394041l_len = int(input())l = list(map(int, input().split(' ')))l.sort() # 이분 탐색def search(h): # 맨 왼쪽은 0 left = 0 # 맨 오른쪽은 끝값 right = l_len - 1 # 중간 mid = (left + right) // 2 result = 0 while True: # 만약 중간값이 구할 값이면 if l[mid] == h: # 1 리턴 result = 1 break # 만약 중간값이 구해야하는 값보다 작으면 elif l[mid] h: # 중간 -..
2019.03.07 -
2019.03.06) 백준 완전탐색 특집 3편 - 2667, 1012 (PyPy3)
dfs사용하니 고민 조금만 하고 해결하였다. 2667번 1234567891011121314151617181920212223242526272829303132333435363738394041c = int(input())l = [list(map(int, input())) for i in range(c)] # dfs용 방문확인배열visited = [[False for j in range(c)] for i in range(c)] # 결과값 저장용result = list()for i in range(c): for j in range(c): # 2중 반복문으로 방문하지 않은 모든 점을 방문함 # 만약 방문하지 않고, 집이 있다면 if not visited[j][i] and l[j][i] == 1: # 현재 카운트 c..
2019.03.06