2019.03.22) 소프트웨어 마에스트로 마지막 스퍼트 3편(탐색) - 1987, 2294 (PyPy3)
2019. 3. 22. 14:07ㆍ프로그래밍(주력)/백준 문제풀이
테스트 시험을 봐봤는데 다들 쉬웠다.
물론 본시험은 어렵겠지만.. 열심히 해보도록하자.
1987번
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | R, 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 = 0 while stack: (i, j), his, w = stack.pop() result = max(result, w) if i > 0: if not ma[i - 1][j] in his: tmp = his.copy() tmp.add(ma[i - 1][j]) stack.append(((i - 1, j), tmp, w + 1)) if j > 0: if not ma[i][j - 1] in his: tmp = his.copy() tmp.add(ma[i][j - 1]) stack.append(((i, j - 1), tmp, w + 1)) if i < R - 1: if not ma[i + 1][j] in his: tmp = his.copy() tmp.add(ma[i + 1][j]) stack.append(((i + 1, j), tmp, w + 1)) if j < C - 1: if not ma[i][j + 1] in his: tmp = his.copy() tmp.add(ma[i][j + 1]) stack.append(((i, j + 1), tmp, w + 1)) print(result) | cs |
2294번
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | n, k = map(int, input().split()) li = [int(input()) for i in range(n)] INF = 1e9 li.sort() re = INF stack = list() stack.append((k, 0)) check = [INF for _ in range(k + 1)] while stack: now, w = stack.pop() if check[now] < w: continue for i in li: for j in range(now // i + 1): nxt_n = now - i * j nxt_w = w + j if check[nxt_n] > nxt_w: stack.append((nxt_n, nxt_w)) check[nxt_n] = nxt_w r = check[0] if r == INF: print(-1) else: print(r) | cs |
'프로그래밍(주력) > 백준 문제풀이' 카테고리의 다른 글
2019.03.21) 소프트웨어 마에스트로 마지막 스퍼트 2편(dp, 삼분탐색) - 1766, 2169, 2504, 2512, 8986 (PyPy3) (0) | 2019.03.21 |
---|---|
2019.03.20) 소프트웨어 마에스트로 마지막 스퍼트 2편(위상정렬) - 1516, 2252, 3665 (PyPy3) (0) | 2019.03.20 |
2019.03.19) 소프트웨어 마에스트로 마지막 스퍼트 1편 - 14442 (PyPy3) (0) | 2019.03.19 |
2019.03.18) 선린 정올특집 1편 - 1449, 9095, 11508, 11509, 13900(PyPy3) (0) | 2019.03.18 |
2019.03.17) 백준 최단경로 특집 6편 - 6118(PyPy3) (0) | 2019.03.17 |