코딩 테스트291 연속된 부분 수열의 합 첫번째 코드 위도우를 통해 계산한다.이때 시작 인덱스와 끝 인덱스, 그리고 sequence 길이 자체를 헷갈리지 말아야 한다. 비내림차순인데 수열이므로 오름차순일 것이고, 끝에서부터 계산하면 가장 짧은 수열을 구할 수 있다.하지만 동일한 숫자가 반복되는 경우, 가장 앞에 있는 인덱스를 가져와야 하므로, 현재 숫자가 이전 숫자와 동일한 값인지 판단해야 한다. def solution(sequence, k): answer = [] num = 0 end_index = len(sequence) - 1 for start_index in range(len(sequence)-1, -1, -1): num += sequence[start_index] .. 2024. 9. 13. 096 가장 긴 증가하는 부분 수열 5 첫번째 코드 먼저 점화식을 세우는 방법알기!!아이디어 만들어보기!!DP 코드 작성하는 방법 연습하기!! 책의 코드를 참고했다!! import sys input = sys.stdin.readline n = int(input()) a = list(map(int, input().split())) a.insert(0, 0) index = 0 maxlength = 1 B = [0] * 1000001 D = [0] * 1000001 ans = [0] * 1000001 B[maxlength] = a[1] D[1] = 1 def binarysearch(l, r, now): while l mid = (l + r) // 2 if B[mid] l = mid + 1 .. 2024. 9. 12. 095 외판원 순회 (미해결) 첫번째 코드 이해가 되지 않은 부분이 있어 이해 후에 코드를 다시 작성할 예정이다. 이진수를 이용해서 표현하여 문제를 푸는 방식이다.해당 방법은 처음 보는 방법으로 언제 이진수를 이용하는 것이 좋은지 알아볼 필요가 있다.링크 2024. 9. 12. 094 행렬 곱셈 순서 (미해결) 첫번째 코드 점화식 작성이 잘 이해가 되지 않았다.그래서 책의 내용대로 DP의 개념을 다시 생각하면서 과정을 거쳤다. 코드는 책을 참고하여 작성하였지만, 시간초과가 나타나 해당 부분을 해결하지 못했다. import sys input = sys.stdin.readline n = int(input()) D = [[-1 for _ in range(n+1)] for _ in range(n+1)] m = [] m.append((0, 0)) for _ in range(n): x, y = map(int, input().split()) m.append((x, y)) def execute(s, e): result = sys.maxsize if D[s][e] != -1: retu.. 2024. 9. 10. 093 Dance Dance Revolution (미해결) 첫번째 코드 이해가 되지 않은 부분이 있어 이해 후에 코드를 다시 작성할 예정이다.링크 2024. 9. 10. 숫자 변환하기 첫번째 코드 BFS를 이용해야겠다! 라고 생각을 했다.처음에는 값만을 넣었는데, count가 정답을 구하기 위해 별도로 필요하므로 [값, count] 형태로 현재까지의 계산값과 계산 횟수를 표시한다. 계산할 수 있는 모든 값을 계산하고, y와 같은 경우 answer 리스트에 넣는다.계산 횟수를 기준으로 정렬 한 후 계산 횟수가 가장 적은 경우만 불러온다. from collections import deque def solution(x, y, n): answer = [] count = 0 queue = deque() queue.append([x, count]) while queue: now = queue.popleft() count = now.. 2024. 9. 9. 이전 1 ··· 3 4 5 6 7 8 9 ··· 49 다음 728x90