<백준 문제풀이: 11047번> 파이썬 - 동전 0 가장 큰 지폐 단위부터 차례대로 계산하면 되는 그리디 알고리즘인 듯 했다. 따라서 다음과 같이 풀었다: 시간 초과 뜬 풀이 import sys N, K = map(int, sys.stdin.readline().split()) values = [] for i in range(N): value = int(sys.stdin.readline()) if value = j: K -= j count += 1 else: break print(count) 파이썬 IDLE 에서 확인해보니 정답은 맞다. 하지만 while문을 실행하는 것이라 시간 초과가.. 알고리즘 테스트/백준 문제풀이 및 해설 2020. 12. 19. 01:30
<백준 문제풀이: 11054번> 파이썬 - 가장 긴 바이토닉 부분 수열 이전의 [백준 11053번]과 매우 비슷한 문제이다. 다른 점은 앞으로 뒤로 합해서 가장 긴 수열을 찾는 것이었다. import sys N = int(sys.stdin.readline()) num_list = list(map(int, sys.stdin.readline().split())) dp_front = [0 for x in range(N)] dp_back = [0 for x in range(N)] for i in range(N): for j in range(i): if num_list[i] > num_list[j] and dp_front[i] < dp_front[j]: dp_front[i] = dp_front[j] dp_front[i] += 1 for i in reversed(range(N)): f.. 알고리즘 테스트/백준 문제풀이 및 해설 2020. 12. 18. 01:08
<백준 문제풀이: 15652번> 파이썬 - N과 M(4) 이 문제도 같이 DFS 방식을 사용하여 풀어야 했던 문제이다. 우선, 이 문제를 알기 전에 앞선 백준 15651번 포스팅을 보고 오길 바란다. 그러면 이해하기가 편할 것이다. import sys N, M = map(int, sys.stdin.readline().split()) check_list = [False]*N output = [] def dfs(depth, N, M): if depth == M: print(' '.join([str(x) for x in output])) return for i in range(N): if check_list[i]: continue output.append(i+1) dfs(depth+1, N, M) check_list[i] = True output.po.. 알고리즘 테스트/백준 문제풀이 및 해설 2020. 12. 16. 01:38
<백준 문제풀이: 9461번> 파이썬 - 파도반 수열 이것도 간단한 문제였다. 피보나치 수열인데 조금만 다른 피보나치 수열이라 생각하면 된다. 런타임 에러가 뜬 풀이 import sys T = int(sys.stdin.readline()) a,b,c,d,e = 1, 1, 1, 2, 2 first_nums = [a,b,c,d,e] def new_series(n): if n 알고리즘 테스트/백준 문제풀이 및 해설 2020. 12. 15. 15:35
<백준 문제풀이: 15651번> 파이썬 - N과 M (3) 이번에는 저번 문제랑도 비슷한 것 같지만, 이번에는 모든 경우의 수를 출력하는 것이 목표인 문제였다. import sys N, M = map(int, sys.stdin.readline().split()) check_list = [False]*N output = [] def solve(depth, N, M): if depth == M: print(' '.join([str(x) for x in output])) return for i in range(N): output.append(i+1) solve(depth+1, N, M) output.pop() solve(0, N, M)모든 경우의 수를 출력하는 것은 생각외로 쉽다. check_list[i]=True 인것을 만들어주지 않으면 된다. 이렇게.. 알고리즘 테스트/백준 문제풀이 및 해설 2020. 12. 14. 00:39
<백준 문제풀이: 15650번> 파이썬 - N과 M(2) 이번에도 백트래킹 문제였는데, itertools.permutations의 방법을 사용하지 않고 dfs 방식을 이용하느라 조금 어려웠다. import sys N, M = map(int, sys.stdin.readline().split()) check_list = [False]*N output = [] def dfs(depth, N, M): if depth == M: print(' '.join([str(x) for x in output])) return for i in range(N): if check_list[i]: continue check_list[i] = True output.append(i+1) dfs(depth+1, N, M) output.pop() for j in range(i+1.. 알고리즘 테스트/백준 문제풀이 및 해설 2020. 12. 13. 00:39