전체 글

서버는 꺼지지 않아요
문제 (링크) https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 나의 코드 import sys from collections import deque input = sys.stdin.readline n, m = map(int, input().split()) in_degree = [0] * (n + 1) graph = [[] for _ in range(n+1)] for _ in range(m): a, b =..
CORS란? 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 출처(Origin): https://developer.mozilla.org/ko/docs/Web/HTTP/CORS 교차 출처 리소스 공유 (CORS) - HTTP | MDN 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라 developer.mozilla.org..
In CPython, the global interpreter lock or GIL is a mutex that protects access to Python objects, preventing multiple threads from executing Python bytecodes at once. The GIL prevents race conditions and ensures thread safety. CPython에서 global intertreter lock(GIL)은 멀티 스레드가 파이썬 바이트코드들을 동시에 실행시키는 것을 막으며 파이썬 object에 대한 접근을 보호하는 뮤택스이다. GIL은 경쟁상태(race condition)을 예방하고 thread-safety를 보장한다. https://wi..
문제 (링크) https://www.acmicpc.net/problem/1963 1963번: 소수 경로 소수를 유난히도 좋아하는 창영이는 게임 아이디 비밀번호를 4자리 ‘소수’로 정해놓았다. 어느 날 창영이는 친한 친구와 대화를 나누었는데: “이제 슬슬 비번 바꿀 때도 됐잖아” “응 지금 www.acmicpc.net 나의 풀이 from collections import deque import sys def get_prime_nums(): prime = [True] * 10000 prime[0], prime[1] = False, False for i in range(2, 10000): if prime[i] == True: j = 2 while i * j < 10000: prime[i * j] = False..
문제 (링크) https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 나의 풀이 h, w = map(int, input().split()) world = list(map(int, input().split())) ans = 0 for i in range(1, w - 1): left_max = max(world[:i]) right_max = max(world[i+1:]) compare = min(left_max, right_max) if..
문제 (링크) https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline n, m, x, y, k = map(int, input().split()) graph = [] # 동: 1 서: 2 북: 3 남: 4 moves = [ [], [0, 1], [0, -1], [-1, 0], [1, 0] ] # 아래부터 0, ..
문제 (링크) https://www.acmicpc.net/problem/18808 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline # 스티커 90도 회전 def rotate_by_90(sticker_board): r, c = len(sticker_board), len(sticker_board[0]) rotated_sticker_board = [[0] * r for _ in range(c)] for i in range(c): for j ..
· 웹/Django
DRF를 통해 프로젝트 진행 중 JWT를 발급해야 할 상황이 생겼다. 토이 프로젝트이고 돈도 없다보니 데이터베이스를 AWS MySQL 프리티어로 사용하고 있는데, 아무래도 이게 성능도 안좋고 느리다보니 세션을 통해 인증과 인가를 하게 되면 매번 데이터베이스를 때리기 때문에 좋지 않다고 판단했다. DRF JWT 키워드로 서치를 많이 해봤는데, 대부분은 djangorestframework-jwt나 django-rest-authtoken 라이브러리를 사용하는 것 같았다. 처음엔 나 역시 이것들을 사용하려고 했는데, 2가지 이유로 그만뒀다. 첫 번째는, 토큰의 만료시간을 제외하곤 커스터마이징하기가 쉽지 않아보였다. 우선, 위 라이브러리들은 기본적으로 username과 password를 입력 받아 토큰을 생성해준..
SeongOnion
조무래기 코딩