파이썬

이전 글https://koreatstm.tistory.com/295 Fast API - 기초많은 프레임 워크를 사용해왔지만, 깊이가 부족하다고 항상 생각했다. 이제는 그것들에 대한 깊이를 더 채워보고자 한다.무엇보다 어떤 질문에 관해서든 이유를 물을 때 바로 답 할 수 있는 실koreatstm.tistory.com 템플릿 Jinja2란?Jinja2는 Python 웹 프레임워크에서 동적 웹 페이지 생성을 위한 템플릿 엔진템플릿 파일 내에서 {{ 변수명 }}으로 동적 데이터 삽입 가능주요 구분 기호{{...}}: 변수나 표현식 출력{%...%}: 제어문 작성 시 사용 {#...#}: 주석 처리 FastAPI에서 Jinja2 템플릿 사용templates 디렉터리from fastapi import FastAPI..
많은 프레임 워크를 사용해왔지만, 깊이가 부족하다고 항상 생각했다. 이제는 그것들에 대한 깊이를 더 채워보고자 한다.무엇보다 어떤 질문에 관해서든 이유를 물을 때 바로 답 할 수 있는 실력을 갇기를 원하기 때문이다.가장 먼저 깊게 파볼 프레임워크는 Fast API이다. 이유는 Python을 주력으로 하고, 제일 많이 맡아 온 역할이 백앤드이기에, 빠르게 정리하고 깊이를 늘릴 수 있다고 판단했다.Fast API를 중심으로 확장하며 정리하겠다. 기본 개념 Fast API는 Python의 async / await 문법을 기반으로 한 비동기 프로그래밍을 지원-> 이 덕분에 여러 요청을 동시에 처리할 수 있어, 높은 트래픽 상황에서도 빠른 응답을 유지할 수 있다. Flask처럼 동기 프로그램의 경우 한 번에 하나..
DP를 구현하는 방법은 2가지가 존재한다. Top-downBottom-up구현재귀반복문저장방식메모이제이션타뷸레이션 Memoization - 필요한 부분 문제들만 구하기부분 문제들의 답을 한 번 구했으면 또 구하지 않도록 (중복연산 없도록) cache에 저장해두고 다음에 갖다 쓰기 Tabulation - 부분 문제들의 답을 미리 다 구해두면 편하다.테이블을 채워간다 → 타뷸레이션 문제를 쪼개서 작은 문제부터 구해가며 원래 문제의 답을 구하는 방식이다.핵심은 점화식을 찾고, 테이블만 잘 정의하면 풀린다. (점화식 찾기가 쉽지 않다는게 문제 ㅋㅋ) 이제 문제들을 풀어보자. 문제풀이https://koreatstm.tistory.com/148https://koreatstm.tistory.com/149https:/..
https://www.acmicpc.net/problem/10844규칙을 먼저 찾아보자본인은 A4용지에 그려가며 규칙을 찾아보았다.인덱스를 0부터해서 입력이 최대 100이기에, 100행 10열로 만들어본다면, 아래 사진과 같이 나온다.써보니 규칙이 보인다.1행은 모든 값이 1이고, 2행부터는 특별한 규칙이 생긴다.화살표로 표시해 놓았듯 0열의 값은 이전 행의 1열의 값이고,9열의 값은 이전 행의 8열의 값임을 알 수 있다.또한 가운데 값들은 예를들어 3행 3열이라고 하면, 그 값은 2행2열과 2행4열의 값의 합임을 알 수 있다.이제 타뷸레이션으로 풀어보자 n=int(input())cache = [[0]* 10 for _ in range(101)]for i in range(1,101): for j i..
https://www.acmicpc.net/problem/11726규칙을 먼저 찾아보자본인은 A4용지에 그려가며 규칙을 찾아보았다.즉, 전에 풀었던 내용과 같은 방식이다.https://koreatstm.tistory.com/148 [백준/Python] 2748:피보나치 수 2https://www.acmicpc.net/problem/2748n=int(input())def func(n): if n==0: return 0 if n==1: return 1 else: return func(n-1)+func(n-2)print(func(n))시간초과가 난다.캐싱을 안해서 오래걸리고, 시간복잡도도 엄청 높기에 시간초과가koreatstm.tistory.com이처럼 f(n) = f(n-1) + f(n-2)의 규칙이다.이제..
https://www.acmicpc.net/problem/11051초기코드n, k = map(int,input().split())def fun(n,k): if k==n or k==0: return 1 else: return fun(n-1,k-1)+fun(n-1,k)print(fun(n,k)%10007)시간초과난다재귀(메모이제이션)import sysn, k = map(int,input().split())sys.setrecursionlimit(10**7)cache = [[0]*1001 for _ in range(1001)]def fun(n,k): if cache[n][k]: # 0이 아닌 수라면 return cache[n][k] if k==n ..
https://www.acmicpc.net/problem/2748n=int(input())def func(n): if n==0: return 0 if n==1: return 1 else: return func(n-1)+func(n-2)print(func(n))시간초과가 난다.캐싱을 안해서 오래걸리고, 시간복잡도도 엄청 높기에 시간초과가 나는 것이다,우리는 중간저장인 캐싱을 사용해야한다.타뷸레이션n=int(input())cache = [0] * 100for i in range(100): if i==0: cache[i]= 0 if i==1: cache[i]= 1 else: cache[i]= cache[..
계란소년
'파이썬' 태그의 글 목록
상단으로