Heap (Priority Queue) 코드 및 사용하는 경우 정리
·
Algorithm, 코딩테스트
Heap (Priority Queue, 우선순위 큐): 항상 가장 작은(또는 큰) 값을 O(log n)에 꺼낼 수 있음1. 최소 비용/가중치 합 구하기: 여러 작업 중 가장 비용이 적은 것부터 선택해야 하는 경우2. 데이터가 클 때 정렬하지 않고 일부 순위만 구하고 싶을 때3. 실시간 정렬 유지: 작업 처리/스케줄링 문제, 중간값 문4. 탐욕(Greedy) 알고리즘에서 최소/최대 선택 from heapq import *# import heapq as hq 이렇게 해도 되는데# 그러면 모든 함수들 함에 hq.heapify 처럼 hq. 붙어야함heap = [5,7,2,4] # heap으로 사용할 리스트 (아직 heap 구조 아님!)heapify(heap) # 리스트를 최소 힙으로 변경print(heap) #..
DFS/BFS 코드 및 사용하는 경우 정리
·
Algorithm, 코딩테스트
★★★ 기본적인 구조 ★★★1. 기본 세팅 (방문 노드 집합 설정 + 스택/큐에 시작 노드 넣어 둠)2. while 스택/큐에 원소가 존재하면3. 스택/큐에서 노드 꺼내고, 그 노드가 방문 노드 집합에 없으면4. 방문 노드에 대한 액션 실행, 방문 노드 집합에 해당 노드 추가5. 해당 노드의 이웃들을 스택/큐에 추가 * DFS/BFS 모두 시간복잡도는 O(V+E)DFS1. 경로 존재 여부 또는 가능한 모든 경로 탐색: connected components, path existence2. 백트래킹: 가능한 모든 경우의 수를 탐색하면서 조건을 만족하는 조합/순열 찾기 (예: N-Queen, Sudoku, Combination Sum 등)3. 재귀적으로 구조를 순회해야 할 때: 트리 탐색 (전위, 중위, 후위..
코딩테스트 주요 함수 및 팁 정리 (260405 업데이트)
·
Algorithm, 코딩테스트
파이썬의 삼항 연산자: a if 조건 else b → 조건이 참일 경우 a, 아닐 경우 bsum(iterable, start=0): iterable한 자료형(이때 해당 자료형은 numeric, 즉 모든 값들이 숫자여야 함)을 인자로 받아 (자료형 내 값들의 합+start)를 반환한다.n을 문자열로 변환 → str(n)str을 정수형으로 변환 → int(str) (이때, argument로 들어가는 문자열(숫자) 맨 앞 글자가 '+' 든 '-'든 알아서 해당 부호에 맞는 정수로 바꿔준다.)str이 문자열일 때 "for i in str"에서 i는 str의 각 문자가 된다.list.reverse(): 리스트를 거꾸로 뒤집는다. (반환값 없음. 원본 리스트를 변환함. 시간 복잡도 O(n))reversed(list..
캐나다 토론토에서 한국으로 짐 보내기 (캐나다쉬핑 토론토 이용 후기)
·
기타
교환학생으로 오게 된 토론토안녕하세요!저는 올해 겨울 교환학생으로 캐나다 토론토에 오게 되었고, 그동안의 생활을 마무리하며 한국으로 돌아갈 준비를 하고 있습니다. 토론토는 정말 눈도 많이 오고 추운 날씨로 유명해서, 저도 그런 날씨에 맞춰 겨울 옷들을 많이 가져왔었습니다. 3월까지도 추운 날씨가 계속됐고 간간히 눈이 내리다가, 4월이 되면서 날이 점점 풀리기 시작했습니다. 그런데 저는 더운 날 입을 옷들은 거의 챙기지 않아서, 여기 와서 봄·여름 옷들을 제법 많이 사게 되었습니다.짐이 많아져 미리 택배로 보내기로 결정!계절별로 짐이 늘어난 탓에, 학기 마치고 한국으로 돌아갈 때 짐을 다 들고 가는 건 현실적으로 어렵겠다는 생각이 들었습니다.그래서 일부 짐은 미리 한국으로 택배로 보내기로 하고, 알아보던 ..
짝지어 제거하기-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.2]
·
Algorithm, 코딩테스트
문제https://school.programmers.co.kr/learn/courses/30/lessons/12973?language=python3 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이def solution(s): stack = [] for i in s: if stack and stack[-1] == i: stack.pop() else: stack.append(i) return 0 if stack else 1핵심 설명LV.2 올바른 괄호 문제와 상당히 유사한 문제다. 해당 문제와 같은 방식으로 문자열의 앞 문..
각종 명령어 단축키 (Git, Notion, Anaconda, 한컴 등) (계속 수정 예정)
·
그 외 공부 관련
Gitgit checkout -b [브랜치 이름]→ 브랜치 새로 만들고 그 브랜치로 checkoutgit branch -d [브랜치 이름] → 브랜치 삭제 (해당 브랜치가 병합된 상태여야함)git branch -D [브랜치 이름] → 브랜치 강제 삭제git branch -m [브랜치 새 이름] → 현재 브랜치 이름 변경git commit -am “(커밋메세지)” → add와 commit 동시에 하기 (이때, 새로 생성한 파일은 추적되지 않으므로 git add를 이용해서 추가해줘야한다)git remote add → remote 등록git push → remote에 pushgit pull → remote에서 pullpush와 pull은 set upstream 옵션 등록 시 뒤에 remote와 br..