반응형

TIL/Python 34

[TIL][pytest-bdd] Given/ When/ Then 잘못 쓰는 패턴 5가지

BDD 시나리오가 100개쯤 쌓였다 리팩토링하면서 보니까 잘못된 패턴이 반복해서 나타났다 매번 "이건 아닌데" 하면서 고쳤던 것들을 정리한다 패턴 1. When 에 검증이 들어간다 # BadWhen 분자 업로드가 완료되었다When 결과가 화면에 표시된다When 프로젝트 생성이 성공한다When 은 액션 만 써야 한다"완료되었다", "표시된다", "성공한다" 는 검증이다검증은 Then 에 써야 하는데, 쓰다 보면 When 에 슬쩍 들어간다# GoodWhen SDF 파일을 업로드한다Then 분자가 목록에 표시된다When 에 검증이 들어가면 두 가지 문제가 생긴다첫째, Step 함수 안에서 assert 와 click() 이 같이 있게 된다둘째, 이 Step 이 통과하면 "업로드가 됐다는 건지, 업로드를 했다는 ..

TIL/Python 2026.03.02

[TIL] pathlib 로 디렉토리 내 파일 총합 구하기 w/ Python

Python 의 pathlib 모듈을 활용해 디렉토리 내 파일 목록을 탐색하고각 파일의 크기를 계산해 총 용량을 구하는 프로그램을 작성해봤다 pathlib 내의 Path 클래스는 파일이나 폴더 경로를 객체처럼 다룰 수 있게 해줘서,문자열보다 훨씬 편리하게 경로 조작을 할 수 있다 작업 디렉토리 설정 및 출력 폴더 생성from pathlib import Path__file__ # 현재 실행 중인 파일 경로WORK_DIR = Path(__file__).parentOUT_DIR = WORK_DIR / "output"OUT_DIR.mkdir(exist_ok=True)__file__ 은 현재 실행 중인 Python File 의 전체 경로를 담고 있는 내장 변수이다 Path(__file__) 로 __file__ ..

TIL/Python 2025.07.09

input = sys.stdin.readline() 과 input = sys.stdin.readline 의 차이

오랜만에 백준 문제를 풀다가, input() 에서 TypeError 가 났다 Traceback (most recent call last): File "/Users/ahram/Desktop/Algorithm/After/12_심화2/04_2108_통계학.py", line 14, in n = int(input()) # 수의 개수 TypeError: 'str' object is not callableahram@Ahram-MacBook-Pro Algorithm % Python 을 너무 오랜만에 봐서 sys 로 input 만드는 것도 까먹었다 이렇게 했더니 String 이라고 Error 가 뜬 거였음 import sys input = sys.stdin.readline()n = int(input()) # 수..

TIL/Python 2025.05.23

Insert Dummy Data into MySQL w/ Python

MySQL 에 Dummy Data 삽입 w/ Python 더미 데이터가 필요한 일이 생겨서 코드를 만들어봤다 userTest 라는 Table 을 만들고 id, name, email Column 으로 구성했다 CREATE TABLE userTest ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), email VARCHAR(100));Cursor 커서 MySQL 에서 SQL 쿼리를 실행하고 그 결과를 가져오는 역할커서를 사용하여 SELECT, INSERT, UPDATE, DELETE 같은 SQL 문을 실행할 수 있다  import mysql.connectorimport randomimport string # MySQL 연결 정보 config = { ..

TIL/Python 2025.02.11

[Python] split() 와 strip()

split()입력 문자열을 공백 (스페이스, 탭, 개행 등) 기준으로 리스트 형태로 반환 사용 예시 word = input().split()# 입력hello world# 결과word = ['hello', 'world'] # 리스트로 저장strip() 입력 문자열의 양쪽 끝에 있는 공백 (스페이스, 탭, 개행 등) 을 제거하고, 문자열로 반환사용 예시 word = input().strip()# 입력hello# 결과word = 'hello' # 문자열로 저장 백준 1181 단어 정렬을 다시 풀어보면서, 나도 모르게 split() 을 썼는데 중복 제거를 하려고 썼던 data_list = list(set(data_list)) 에서 아래와 같은 에러가 나왔다 Traceback (most recent call la..

TIL/Python 2024.12.03

[TIL] B-Tree, B-트리

B-Tree, B-트리데이터베이스와 파일 시스템에서 널리 사용되는 트리 자료 구조이진 트리는 하나의 노드가 가질 수 있는 자식 노드가 최대 2개인 반면,B-Tree 는 m 개의 자식 노드를 가질 수 있다  차수가 3인 B-Tree, 파란색 부분은 각 노드의 Key 를 나타내며, 빨간색 부분은 자식 노드들을 가리키는 포인터Key 들은 노드 안에서 항상 정렬된 값을 가지며, 각 Key 들의 왼쪽 자식들은 항상 Key 보다 작은 값을, 오른쪽은 큰 값을 가진다  B-Tree 는 order M 을 가지며, 이를 B-Tree of order M 이라고 한다B-Tree of order M 은 다음과 같은 조건을 만족해야 한다모든 노드가 가질 수 있는 자식 노드의 최대 수는 M 이다 ex) 3차 B-Tree 라면 최..

TIL/Python 2024.10.04

[TIL] 배낭 문제 Knapsack Problem

배낭 문제 Knapscak Problem 최대 K 의 무게를 담을 수 있는 배낭 각기 다른 가치 V 를 가지고 W 의 무게인 N 개의 물건을 배낭에 최대한 가치가 높은 물건들로 담을 수 있는 조합을 찾는 문제  만약 n개의 물건이 있을 때, 가능한 모든 조합을 만들기 위해서는 2^n개의 경우를 시도해 보아야 하고그렇게 된다면 시간 복잡도는 O(2^n) 이기 때문에 Brute Force 는 적합하지 않다  배낭 문제는 물건을 쪼갤 수 있는 Fraction Knapsack Problem 과물건을 쪼갤 수 없는 0-1 Knapsack Problem 으로 나뉜다   부분 배낭 문제 Fraction Knapsack Problem 물건을 쪼개서 넣을 수 있다 가치가 큰 물건부터 담고, 남은 무게만큼 물건을 쪼개는..

TIL/Python 2024.10.01

[TIL] LCS 알고리즘

LCS 알고리즘Longest Common Subsequence 최장 공통 부분 수열 또는 Longest Common Substring 최장 공통 부분 문자열  Longest Common Substring두 개 이상의 문자열에서 연속적으로 나타나는 가장 긴 부분 문자열 찾기 부분 문자열은 주어진 문자열의 연속된 부분을 의미한다원래 문자열에서 특정 시작 위치에서부터 특정 끝 위치까지의 모든 문자를 포함한다이는 문자들이 연속적으로 이어져 있어야 하며, 반드시 전체 문자열의 일부분이어야 한다ex. 문자열 abcde 에서 bcd 는 부분 문자열이지만 acd 는 부분 문자열이 아니다 Longest Common Substring 찾는 방법 1. 문자열 A, 문자열 B 를 한 글자씩 비교해 보기2. 두 문자가 다르다면..

TIL/Python 2024.09.30

[TIL] 그리디 알고리즘 Greedy Algorithm

그리디 알고리즘 Greedy Algorithm 매 선택에서 지금 이 순간 당장 최적인 답을 선택하여 적합한 결과를 도출하자는 알고리즘 설계 기법 항상 최적의 값을 보장하는 것이 아니라 최적의 값에 '근사한 값'을 목표로 한다  예시) 경로1 이 [ 1 - 1 - 1 - 100 ] 이고 경로2 가 [ 3 - 10 - 3 - 10 ] 일 때경로1 에서는 첫 세 단계에서 최적의 답을 선택했지만 최종 가중치는 103이고경로2 에서는 각 단계에서의 선택이 더 나은 결과를 가져와 최종 가중치가 더 작아진다이 때 경로1 에서의 선택이 그리디 방법론의 예시 그리디 알고리즘 주요 속성탐욕 선택 속성 Greedy Choice Property각 단계에서 '최선의 선택' 을 했을 때 전체 문제에 대한 최적해를 구할 수 있는 ..

TIL/Python 2024.09.29
반응형