[Daily Post] 230625
[Daily Post]는 매일매일 탐구한 내용을 간략하게 기록하는 포스트입니다.
따라서 정리되지 않은 내용과 추측을 포함하고 있을 수 있습니다.
더 체계적인 형식을 갖춘 글은 해당 카테고리의 포스트를 확인해주세요 :)
My Study
PS
엔지니어 대한민국로 공부
- Linked List vs Array
- Array는 한번 선언하면 크기를 바꿀 수 없지만, LL은 node의 자식과 부모를 지정함으로써 변경 가능
- LL은 단방향과 양방향이 있다
Tacademy
- PS란 무엇인가
- 500문제는 풀어야 한다. 유형당 20문제는 풀어야 감을 잡고 자신감이 생긴다
- 예외 케이스를 잘 찾아야한다 -> 최저, 최상, 최고, 최대, 없을 때 등의 분기가 필요하다
- 읽기와 분석
-
문제를 보자마자 입력의 제한과 방법론을 읽고 파악해야한다. 안 나와있으면 물어봐야함
-
입력과 초기화 팁
- 수:
num = int(input()) - 문자열:
string = input() - 문자의 배열:
char_lst = list(input())- 나중에 char_lst 내용을 문자열로 만든다 –>
join메서드 사용
- 나중에 char_lst 내용을 문자열로 만든다 –>
- 배열:
lst = list(map(int, input().split()))- map(x,y)는 x함수를 y의 원소에 모두 적용한 map 객체를 반환
- 수:
- 에러 메시지 이해하기
- 추상화와 기능 분리: 함수 활용
- TC가 많거나, 분리되는 기능이 많은 경우에는 적절하게 함수로 분리하여 main 함수를 가볍게 하자
-
가독성: indent를 줄이자
-
케이스 1)
for i in range(N): for j in range(N): for k in range(N):위와 같은 코드를, 아래와 같이 indent를 줄인 형태로 나타내면 가독성이 높아진다
for num in range(N**3): i,j,k = num // (N*N), num//N%N, num%N -
케이스 2)
for i in range(N): if state: process()위와 같은 코드를, 아래와 같이 indent를 줄인 형태로 나타내면 가독성이 높아진다
for i in range(N): if not state: continue process() -
케이스 3)
def function(x): if x : return True else : return False위와 같은 코드를, 아래와 같이 indent를 줄인 형태로 나타내면 가독성이 높아진다
def function(x): return True if x else False - 명명법은 통일
- 수학
- GCD, LCM: 1부터 체크하지 말고 min(a,b)부터 체크하는게 조금이라도 더 빠르다
- 호제법
def gcb(a,b):
return b if a%b==0 else gcd(b,a%b)
-
ck = [False for _ in range(N+1)] -
Divide and Conquer
- 정렬
-
Selection sort: O(N^2)
-
Bubble sort: O(N^2)
-
Quick sort: O(NlogN)
- 역정렬된 list에 대해 quick sort하면 O(N^2)만큼 걸리니까 pivot을 random으로 정하거나 중간 index부터 시작함
-
Merge sort: O(NlogN)
- merge sort 구현할 때 투포인터 쓰게 된다
-
Radix sort
- 자료구조: stack, queue, deque
from collections import에 대한 python 공식 문서
- Stack:
push,pop,top - Queue:
push,pop,front - Deque: 덱. Stack과 Queue의 합성