목록Python Algorithm (6)
이것저것 공부기록

1. 최대점수 구하기(DFS) 결국 1번째 문제를 풀거냐 말거냐, 2번째 문제를 풀거냐 말거냐, ... 의 문제. def DFS(L, score, time): global maxScore if time > m: return if L == n: if score > maxScore: maxScore = score else: DFS(L+1, score+a[L][0], time+a[L][1]) # 다음 행으로 넘어갈 때 back하는 효과 / L번째 문제 품 DFS(L+1, score, time) # L번째 문제 풀지 않음 if __name__ == "__main__": n, m = map(int, input().split()) a = [] for _ in range(n): s, t = map(int, input..

0. 재귀함수와 스택 재귀함수: 자기 자신을 호출하는 함수, 재귀함수는 스택으로 구현된다. 반복문을 대체할 수 있는 것이 재귀함수. 사용자에게 n이라는 수를 입력받으면, 1부터 n까지 출력해주는 프로그램을 만들어보자. def DFS(x): if x > 0: # x에 0이 들어오면 종료 print(x, end = ' ') DFS(x-1) if __name__ == "__main__": n = int(input()) DFS(n) DFS(x) 함수는 재귀함수이고, 위 코드를 실행한 결과는 다음과 같다. 그러나 우리는 1부터 출력하기로 했으므로 코드를 다음과 같이 수정한다. def DFS(x): if x > 0: # x에 0이 들어오면 종료 DFS(x-1) print(x, end = ' ') if __name_..
스택 · LIFO: Last In First Out, 나중에 들어간 게 먼저 나온다. · 들어가는 입구와 나오는 출구가 같다. · 파이썬은 리스트로 스택을 구현할 수 있다. 리스트 그 자체가 스택의 속성을 띰. 1. 가장 큰 수(스택) 입력예제 1번 5276823을 가지고 문제를 이해해보자면, 각 숫자들은 자신 앞에 자신보다 더 작은 숫자가 있으면 그 숫자를 없애고(지우고) 앞으로 가야한다. 1) 5 5 2) 2 - 앞의 숫자가 자기보다 큼 → 지우지 않음 5 2 3) 7 - 앞의 숫자들이 자기보다 작음 → 지우고 앞으로 전진 5 2 7 즉, 4) 6 7 6 5) 8 - 7은 지울 수 없기 때문에(지우는 횟수 끝) 6까지만 지울 수 있음 7 6 8 6) 더이상 지울 수 없기 때문에 답은 7 8 2 3 입..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.