본문 바로가기

Python10

[백준 30805번] 사전 순 최대 공통 부분 수열 (Python) import sysinput = sys.stdin.readlinen = int(input())a = list(map(int, input().split()))m = int(input())b = list(map(int, input().split()))ans = []while a and b: # a와 b 모두 항목이 있는 동안 실행 max_a = max(a) max_b = max(b) if max_a == max_b: ans.append(max_a) # 최댓값이 같은 경우, 최댓값 이후의 요소만 남기기 a = a[a.index(max_a)+1:] b = b[b.index(max_b)+1:] elif max_a > max_b: .. 2024. 7. 9.
[백준 15663번] N과 M (9) {Python 풀이} 이 문제는 itertools 모듈의 permutations 함수를 이용하여 해결할 수 있습니다. permutations 함수는 주어진 iterable에서 지정된 길이의 순열을 구하는 함수입니다. from itertools import permutations import sys input = sys.stdin.readline n, m = map(int, input().split()) numbers = list(map(int, input().split())) # 주어진 수열을 사전순으로 정렬합니다. numbers.sort() # permutations 함수를 이용하여 길이가 M인 순열을 구합니다. # set을 이용하여 중복되는 수열을 제거합니다. result = set(permutations(numbers,.. 2023. 5. 2.
KMP 알고리즘 KMP 알고리즘은 빠른 문자열 검색을 돕는 알고리즘이다. 찾고자 하는 문자열을 pattern 이라고 하고 모든 문장을 all string 라고 하자. KMP 알고리즘을 구현하기 위해 해야할 것이 있다. 1. Pattern 문자열을 이용해 pi(파이)배열을 만들어야 한다. 2. pi 배열을 이용해 빠른 문자열을 검색해준다. pi배열 이란, Pattern 문자열에 있는 접두사 (Prefix) 와 접미사 (Suffix)가 같아 지는 최대 길이를 나열해 놓은 배열이다. 말로 설명하지니 좀 어려우므로 아래 그림을 통해 확인해보자. 예를 들어, pattern이 "abcdabc" 라면 단어의 길이가 7인데, 1개씩 늘려가며 접두사와 접미사가 겹치는 최대 길이를 나타내 보면, pi배열은 [0, 0, 0, 0, 1, 2.. 2023. 4. 26.
[LeetCode] 623. Add One Row to Tree (Python) 623번 문제 링크 https://leetcode.com/problems/add-one-row-to-tree/ Add One Row to Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제설명 입력: root (TreeNode), val(int), depth (int) 출력: depth 깊이에 val 값이 추가된 root 트리 * depth가 1이라면 root자리에 node를 추가하고 원래 tree를 새 node의 left subtree로 오게하기 .. 2022. 10. 5.