본문 바로가기

Algorithm89

[백준] 2839번 설탕 배달 아무 정보 없이 첨에 재귀로 풀려고 했다가 88퍼에서 자꾸 틀렸다고 뜨길래.. 그리디 첫 입문이기도 해서 슬쩍 남의 코드를 좀 봤다 전에 쓰던 코드랑 비교하면 흐음... 로직 자체는 크게 다르지 않은거 같은데... 88퍼에서 틀리는거 보면... 약간의 돌연변이에.. 대응을 못하는것 같다... 그게 뭔진 모르겟지만.. 이 코드가 훨씬 깔끔 성능도 좋구 재귀를 안쓰니까 그리고 첨에 재귀로 돌리니까 자꾸 런타임 에러가 뜨길래 생각해보니까 예전에 dfs 잠깐 맛보기 할때 리미트를 해제 했던게 생각나서 리미트 해제 하고 풀었다 def greedy(N): counter = 0 while N > 0: if N % 5 == 0: N = N - 5 counter += 1 elif N % 3 == 0: N = N - 3 .. 2020. 9. 29.
[백준] 2206번 벽 부수고 이동하기 말이 되고픈 원숭이 문제를 풀었다면 아주 쉬운 문제 import sys from collections import deque def bfs(): visited[0][0][1] = 1 que = deque() que.append([0, 0, 1]) while que: x, y, k = que.popleft() if x == N - 1 and y == M - 1: return visited[x][y][k] for i in range(len(direction)): nx = x + direction[i][0] ny = y + direction[i][1] if 0 2020. 9. 24.
[백준] 7562번 나이트의 이동 쉬운문제.. 그냥 한칸씩 이동에서 범위만 조금 넓어진 문제 from collections import deque kDirection = [[-1, -2], [-2, -1], [-2, 1], [-1, 2], [1, 2], [2, 1], [2, -1], [1, -2]] def BFS(startX, startY, endX, endY, visited): que = deque() que.append([startX, startY, 0]) visited[startX][startY] = 1 while que: cx, cy, cc = que.popleft() if cx == endX and cy == endY: print(cc) break for i in range(len(kDirection)): nx = cx + kD.. 2020. 9. 23.
[백준] 1600번 말이 되고픈 원숭이 아 진짜 어려웠다.. 하다하다 안되서 좀 남의 코드도 보고 유투브 영상도 보고 했는데... 아무튼... 진짜 처음 접해보는 상상도 못한.. 그런거라.. 이제는 좀 비슷한건 풀겠찌.. 그리고 Queue로 짜면 성능이 안나오고 Deque으로 가야됨 import sys from collections import deque K = int(input()) W, H = map(int, input().split()) data = [] visited = [[[0 for i in range(K + 1)] for i in range(W)] for i in range(H)] def BFS(): counter = 0 que = deque() que.append((0, 0, K)) visited[0][0][0] = 1 whil.. 2020. 9. 23.