개발 (5) 썸네일형 리스트형 [자료구조] Stack 가장 자주 쓰이는 자료구조 형태인 Stack에 대해 정리해보고자 한다. python을 배웠으니 python 기준으로 서술한다. 📌 Stack 정의 LIFO(Last In, First Out) 구조로써 가장 나중에 들어온 자료가 가장 먼저 나가는 형태이다. 📌 Python에서 Stack 구현 list를 이용하여 Stack을 구현한다. 어떠한 자료를 넣어야 할 때(push)에는 list의 append 함수를, 빼내야 할 때(pop)에는 pop 함수를 이용한다. 📌 그 외의 Stack 기본 연산 - peek(): 스택의 가장 위에 있는 원소를 반환한다. (pop과 달리 삭제하지 않는다.) - empty(): 스택이 비어있다면 1, 비어있지 않다면 0을 반환한다. 📌 시간복잡도 - push: O(1), top에.. map 함수, 람다 함수 그리고 iterable/iterator 사실 map 함수는 백준 문제 풀때나 map(int, input().split()) 형태로 자주 썼는데 이게 무슨 의미인지 와닿진 않았다. 이해하고 썼다기 보단 외워서 쓴 개념이 강해서 이 기회에 한번 정리해보고자 한다. 📌 map() 함수의 기본 정의 map(function, iterable) - 첫번째 매개변수: 함수 - 두번째 매개변수: 반복 가능한 자료형(리스트, 튜플 등) 함수의 동작방식은 두번째 인자로 들어온 반복 가능한 자료형을 첫번째 인자로 들어온 함수에 하나씩 집어넣어서 함수를 수행한다. 백준 문제를 풀이하며 자주 쓰던 map(int, input().split())은 결국 사용자로부터 입력받은 값을 input()으로 받아들이고 이 받아들인 값을 split()으로 구분자 스페이스를 이용하여.. 소수 여부를 빠르게 처리하는 알고리즘(에라토스테네스의 체) 소수: 1과 자기 자신 외에는 나누어 떨어지지 않는 수를 의미 📌 하나의 수에 대한 소수 판별 # 소수 판별 함수 (2 이상의 자연수에 대해) # 알고리즘 성능: O(X) - 모든 수를 하나씩 확인하므로. def is_prime_number(x): # 2부터 (x-1)까지의 모든 수를 확인하며 for i in range(2, x): # x가 해당 수로 나누어 떨어진다면 if x % i == 0: return False # 소수가 아님 return True # 소수임 print(is_prime_number(4)) print(is_prime_number(7)) 약수의 성질: 모든 약수가 가운데 약수 기준으로 곱셈 연산에 대해 대칭을 이룸. 예를 들어 16의 약수 1, 2, 4, 8, 16이면 가운데 약수 4.. self 및 언더스코어(_) 의미 💡self 클래스의 생성자나 함수 파라미터로 self 라는 매개변수를 넣음 self에는 객체가 생성자와 함수에 자동으로 전달되도록 하는 역할을 함 객체를 호출한 자신이 전달되기 때문에 self라고 명명되는 것 self말고 다른 이름을 사용해도 상관없으나 관례에 따르는 것이 다른 사람이 내코드를 볼때도 편할 것. 💡언더스코어(_, __) CASE1. 언더스코어가 독립적으로 사용 인터프리터에서 마지막 실행 결과 값을 가지는 변수로 사용 CASE2. 변수명이 굳이 필요없을 경우 사용 ex) for _ in range(5) CASE3. `__이름__` 내장된 특수한 함수와 변수를 나타냄 ex) `__init__`: 클래스 생성자 함수 ex2) `__add__`: 연산자 오버로드용 CASE4. 네이밍 개발하는 사.. DRF(Django REST Framework)에 대한 생각 정리 나름대로 DRF 인증 방식에 대한 공식 문서와 여러 블로그를 참고하여 내린 자체 결론을 적어본다. (공부하며 찾아보다 알게된 내용이기 때문에 틀린 내용이 있을 수 있습니다. 이 글을 보시는 모든 분들 지적 대 환영합니다. 확인 후 수정 반영하겠습니다.) DRF 유저/인증 방식으로 JWT(JSON Web Token) 방식으로 많이 언급된다. DRF가 Web에서 JSON을 다루기 위한 방법론 중 하나라는것 까지는 이해가 되는데 왜 Token을 채택했을까? 라는 의문이 들었다. 그 근본은 웹 프로토콜인 HTTP의 특성을 이해하면 되지 않을까라는 생각이 든다. HTTP는 TCP 중 하나의 프로토콜로 "비연결성"이라는 특성을 가지고 있다. 쉽게 말해 서버와 클라이언트가 연결이 일어나고나면 지속적으로 연결되어있는 .. 이전 1 다음