본문 바로가기

IT/Python

(9)
파이썬 executemany 쓰지 않고 한 번에 insert 문제상황: executemany 를 사용하여 insert를 한 번에 처리하고자 함. 정상작동하던 코드가 insert_dts 컬럼을 추가하고자 하니 문제 발생123456789101112131415import re  RE_INSERT_VALUES = re.compile(    r"\s*((?:INSERT|REPLACE)\b.+\bVALUES?\s*)"    + r"(\(\s*(?:%s|%\(.+\)s)\s*(?:,\s*(?:%s|%\(.+\)s)\s*)*\))"    + r"(\s*(?:ON DUPLICATE.*)?);?\s*\Z",    re.IGNORECASE | re.DOTALL,) query = f'INSERT IGNORE INTO TABLE_NM (aaa, DTS) VALUES (%s, NOW())..
[codility] Greedy TieRopes https://app.codility.com/programmers/lessons/16-greedy_algorithms/tie_ropes/ TieRopes coding task - Learn to Code - Codility Tie adjacent ropes to achieve the maximum number of ropes of length >= K. app.codility.com 문제: 배열 A에 줄 길이가 담겨져 있다. 인접한 (ex. A[0], A[1]) 줄은 묶을 수 있고 묶은 줄은 또 묶을 수 있다. A 에서 K 이상의 줄은 몇 개 만들 수 있는 지 반환 1 2 3 4 5 6 7 8 9 10 11 12 def solution(K, A): cnt = 0 rope_len = 0 for l in A..
[codility] Greedy MaxNonoverlappingSegments https://app.codility.com/programmers/lessons/16-greedy_algorithms/max_nonoverlapping_segments/ MaxNonoverlappingSegments coding task - Learn to Code - Codility Find a maximal set of non-overlapping segments. app.codility.com 1 2 3 4 5 6 7 8 9 10 11 12 13 def solution(A, B): if len(A) == 0: return 0 last_idx = 0 cnt = 1 for idx in range(1, len(A)): if B[last_idx]
[Greedy] 이것이 코딩 테스트다 그리디에 나오는 예제를 제 방식대로 수정하여 풀었습니다. 큰 수의 법칙 배열의 크기 n, 숫자를 더할 횟수 m, 연속해서 같은 숫자를 사용할 수 있는 횟수 제한 k 숫자 배열을 입력 받아서 만들 수 있는 가장 큰 수 출력 => 가장 큰 수를 제한까지 더하고 두 번째 큰 수를 한 번 더하고 다시 가장 큰 수를 더하는 방식으로 반복 1 2 3 4 5 6 7 8 9 10 11 12 n, m, k = map(int, input().split()) data = list(map(int, input().split())) total = 0 data.sort() count = m // (k + 1) total += (m -count) * data[-1] total += count * data[-2]..
두 수의 합 (이중 for문 / 투 포인터 / Hash) 제로베이스 백엔드 스쿨 김태원 님이 진행하신 알고리즘 특강 복습 자바로 진행했지만 코테는 파이썬으로 푸는 게 아직 익숙해서 파이썬으로 정리했다. 문제: 길이가 n인 배열 중 다른 값 두 개를 더했을 때, 주어진 target 과 값이 같다면 두 값을 출력하고, 없다면 [0, 0]을 출력. 단, 두 수를 합했을 때, target 이 되는 쌍은 하나만 존재. 1. 이중 for 문을 사용한 풀이 O(N^2) 1 2 3 4 5 6 7 def solution (arr, target): for i in range(len(arr) -1): for j in range(i , len(arr)): if arr[i] + arr[j] == target: return [arr[i], arr[j]] return [0, 0] cs ..
[프로그래머스] 파일명 정렬 (안정 정렬이란?) https://school.programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 2 3 4 5 6 7 8 import re def solution(files): p = re.compile('[a-zA-Z-.\s]+') n = re.compile('\d{1,5}') files.sort(key = lambda x: ((p.search(x).group()).upper(), int(n.search(x).group()))) return files Colored by Color Sc..
파이썬 리스트 선언시 주의 a = [[], []. []]식의 이중 리스트를 선언하고 싶었다. a= [[]]*3 으로 선언하였으나 이렇게 되면 얕은 복사가 되기 때문에 a[0] 에만 append 시켜줘도 자동으로 a[1] a[2] 에도 apppend 한 값이 등록 된다!! 따라서 이중 리스트 초기화 시에는 a = [[] for _in range(3)] 이런 식으로 리스트 컴프리헨션을 활용하는 것이 좋다
파이썬 소수판별 (에라토스테네스 체) 소수: 2 보다 큰 자연수 중 1과 자기 자신을 제외한 자연수로 나눠 지지 않는 수 에라토스테네스 체: N 보다 작거나 같은 모든 소수 구할 때 사용 가능 1. 2-N 까지 나열 2. 남은 수 중 처리 하지 않은 가장 작은 수 찾기 3. i 를 제외한 배수 모두 제거 -> 배수 라는 건 자기 자신 이외의 것으로 나눠진다는 뜻이니까 4. 반복할 수 없을 때까지 2, 3번 반복 import math n = 100 array = [True for i in range(n+1)] for i in range(2, int(math.sqrt(n) + 1)): if array[i]: j = 2 while i * j