일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- selenium-wire
- boto3
- Airflow
- pandas
- PIP
- reverse v.s. reversed
- OS
- 생각
- blinker
- 고차함수
- os.path
- 순수함수
- sort v.s. sorted
- functools.wraps
- decorator
- Python
- 코딩 테스트
- S3
- ds_store
- 함수형 프로그래밍
- slicing [::-1]
- sort(reverse=True) v.s. reverse
- [초급(예비) 개발자 오픈소스 실무 역량강화 교육]
- r-string
- timestamp
- 쿼리
- CI/CD
- Today
- Total
목록2025/03 (9)
공부일지

백준 문제를 풀다가 변수 matrix(행렬, 2차원 배열)가 값이 이상하게 할당되는 것을 조사식을 통해 확인했다.matrix1 과 matrix2의 원소를 합치는 함수를 짰는데matrix 내에 배열의 값이 똑같이 들어가는 것이다. (아래 캡처 및 코드 참고)(백준문제 참고 링크: https://www.acmicpc.net/problem/2738) def add_matix_elements(n, matrix1, matrix2): matrix = [[0]*n] * n for i in range(n): for j in range(n): matrix[i][j] = matrix1[i][j] + matrix2[i][j] return matrix 이유는 얕은 복사 때문이..

BFS, DFS 구현할 때 헷갈리던 부분 총정리!갑니다~사전지식1. 알고리즘 BFS, DFS 개념2. 자료구조 스택, 큐 개념3. 알고리즘 재귀 개념 중요 차이점BFS - 1. 반복문만(큐)DFS - 1. 반복문(스택) 2. 재귀함수 입력 자료구조1. 인접행렬2. 인접리스트(코딩 테스트에서 많이 씀) 목차0. 입력 예시1. BFS 구현2. DFS 구현3. 인접행렬보다 인접리스트를 많이 쓰는 이유4. 결론 입력예시# 그래프 예시. 간단한 무방향 그래프 0 / \ 1 2 \ / 3 # 간선 목록(0, 1), (0, 2), (1, 3), (2, 3) 입력 자료구조# 인접 행렬adj_matrix = [ [0, 1, 1, 0], # 0번 노드는 1, 2와 연결 ..
BFS 구현방식이 다양해서 차이를 알아보도록 하자. 사전지식1. DFS, BFS 의 개념2. DFS, BFS 의 자료구조(인접행렬, 인접리스트)3. 시간 복잡도 목차1. [Bool] 방식과 [node] 방식의 차이점2. visited 배열 쓸 때와 result 배열만 쓸 때의 차이점 사실 1번 2번은 같은 내용이다.살펴보자. 1. [Bool] 방식과 [Node] 방식의 차이점편의상 구분방식예시의미[Bool] 방식visited = [False] * Nvisited[node] = True빠른 방문 체크를 위해 사용[Node] 방식if node in result:result.append(node)방문 여부를 결과 저장을 겸해서 체크 1️⃣ visited = [False] * N (Bool 리스트)✅ 장점빠르..
계산기를 만들면서 다양한 사칙연산 프로그래밍을 위한 방법을 정리해보고자 한다.여러 숫자에 대해 적용하는 방법이며, 첫 번째 숫자에 대해 나머지 숫자들이 하나의 연산으로 누적계산되고 최종으로 1개의 값을 반환하는 법이다. 덧셈# 함수명 참고: add_all 할건데 간단히 add로 지음.# sol0: 연산자 +, for-loopdef add(operands): total = 0 for i in operands: total += i return total# sol1: 내장함수 sumdef add(operands): return sum(operands)# sol2: itertools.accumulateimport itertoolsdef add(operands): return ite..
알고리즘 테스트 시간을 잴 때 time을 이용했는데 timeit이라는 모듈을 알게 됐다.둘 다 실행 시간을 재는 목적이긴 한데, 정확도와 사용 목적이 다르다한다. time vs timeit 비교시작!⏱️ 1. time 모듈장점간단하게 한 번만 실행해서 시간 측정 가능디버깅할 때 빠르게 쓸 수 있음사람이 직접 코드 블록을 지정해서 원하는 부분만 측정 가능단점짧은 코드일수록 정확하지 않음 (ms 단위 이하는 부정확)백그라운드 잡음(예: OS task scheduler)에 영향 많이 받음반복 실행 없이 단발성이라 변동성 큼 ⏱️ 2. timeit 모듈장점여러 번 반복해서 평균 시간 측정 (기본 100만 번)실행 환경 노이즈를 줄여서 훨씬 정밀알고리즘 미세 성능 비교에 적합 (예: A 방식 vs B 방식)단점코..

정렬 문제를 푸는데 푸는 방법을 찾아보던 중 다양한 자료구조를 활용할 수 있는 걸 알게됐다. 목차1. 정렬할 때 쓰는 자료구조(더 있을 수 있음.)2. 쓰고 느낀 장단점(+ GPT 추가 설명)아래 나열한 방식 중 실제로 써본건 namedtuple과 struct이다.참고용으로 다 묶어서 올려본다.# tuple# tuple 그대로 쓰면 됨print("Tuple 방식:")for s in students: print(s)# namedtuplefrom collections import namedtuplestudent = namedtuple('student', ['id', 'math', 'comp'])s = student(1, 90, 80)print(s.id, s.math, s.comp)# structimpo..
'''https://codeup.kr/problem.php?id=10941094 : [기초-1차원배열] 이상한 출석 번호 부르기2input1010 4 2 3 6 6 7 9 8 5output5 8 9 7 6 6 3 2 4 10'''import timestart1 = time.time()n = int(input())nums = input().split()nums.reverse()print(' '.join(nums))end1 = time.time()start2 = time.time()n = int(input())nums = input().split()print(' '.join(list(reversed(nums))))end2 = time.time()notice = f'''time1: {end1 - start1}..

'''https://codeup.kr/problem.php?id=14101410 : 올바른 괄호 1input((())()(()))output6 6'''import timestart1 = time.time()gwalho = list(input())left_cnt = 0right_cnt = 0for i in gwalho: if i == '(': left_cnt += 1 elif i == ')': right_cnt += 1print(left_cnt, right_cnt)end1 = time.time()start2 = time.time()from collections import Countercounter = Counter(gwalho)# print(counter.items()..

파이썬으로 코딩테스트를 준비할 때 입력은별도로 import 필요 없는 내장함수 input()이나 import sys를 통해 stdin.readline()을 이용할 수 있다. 눈으로 보기에는 input() 보다 stdin.readline() 더 길고 import 도 하기 때문에 입력시간이 더 길 것 같다.과연 그럴지 한번 확인해보자.'''https://codeup.kr/problem.php?id=14091409 : 기억력 테스트 1input10 9 8 7 6 5 4 3 2 13'''import sysimport timestart1 = time.time()arr = list(map(int, input().split()))k = int(input())print(arr[k-1])end1 = time.time()..