본문 바로가기

분류 전체보기

(30)
[Web] Session vs JWT Session과 JWT Session방식의 Authentication / Authorization 방식은 구현하기 쉽지만, 분산 처리를 해야 하는 경우 문제가 생깁니다. 먼저 Session을 사용하는 2가지 방식에 대해서 알아보고, 어떤 문제가 생기는지 알아보겠습니다. Sticky Session Load Balancer가 특정 Client의 Session 정보를 가지고 있는 Server Instance로 연결해줍니다. 이는 두 가지 문제점을 안고 있습니다. 1. 특정 서버가 장애가 생긴다면? Server Instance2가 장애가 생겼을 때, Client2의 요청은 어디로 가야할까요? Session정보는 Server Instance2만이 가지고 있으므로 기존 Session 정보는 사용할 수 없게 됩니다...
[ACMICPC] 1992 . 쿼드트리 1992번 쿼드트리 문제 보러가기 🅰 설계 1. 어떤 방법을 사용할 것인가? 정해진 범위를 탐색하는 행동은 같고, 그 범위 내에서 점이 모두 같지 않으면 4가지 범위로 나눠서 각 범위마다 다시 같은 행동을 반복한다. 재귀로 행동을 반복하면서 인자로 범위를 정해주는 방법을 생각할 수 있다. 2. 재귀 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 static void split(int sy,int sx,int ey,int ex,int size){ char pivot = map[sy][sx]; for(int i=sy;i
[ACMICPC] 1931 . 회의실 배정 1931번 회의실 배정 문제 보러가기 🅰 설계 1. 어떤 방법을 사용할 것인가? 시작 시간과 종료 시간에 대해서 생각해 보자. 최대한 많은 회의 수를 정하는 데는 회의가 얼마나 긴지 짧은지는 상관이 없다. (0,100),(7,9),(4,11)의 회의들이 있을 때를 생각해 보자. 시작 시간을 기준으로 : 시작 시간이 가장 빠른 첫 번째 회의는 빨리 시작하지만 100에 끝나게 되어 이 회의를 선택할 경우 (0,100) 사이의 회의는 모두 쓸 수 없게 된다. 회의의 시작 시간이 아무리 빨라도 종료 시간이 늦으면 다른 회의를 선택하는 것이 좋다. 종료 시간을 기준으로 : 종료 시간이 가장 빠른 두 번째 회의를 선택하면 (7,9) 사이의 회의를 선택할 수 없다. 종료 시간이 빠른 대로 회의를 배정하면 그 종료 시..
[ACMICPC] 1012 . 유기농 배추 1012번 유기농배추 문제 보러가기 🅰 설계 1. 어떤 방법을 사용할 것인가? map을 만들고 4방향을 탐색하며 연결된 부분을 다 체크하고 답의 value를 올리는 방식을 생각할 수 있다. BFS : Queue에 위치를 넣으면서 방문한 map을 0으로 바꿔주면 된다. DFS : 재귀로 방문한 map을 0으로 바꿔주면 된다. DFS를 사용하기로 한다. Queue에 넣고 빼는 작업 없이 재귀로 map의 방문 체크만 하면 되기 때문에 더 간단하게 풀 수 있다. 2. 방문 체크 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 for(int i=1;i
[ACMICPC] 13460 . 구슬탈출 2 13460번 구슬탈출 2 문제 보러가기 🅰 설계 1. 어떤 방법을 쓸 것인가? 4방향으로 구슬을 한번 씩 굴려보는 행동을 10번 까지 반복해서 해볼 수 있다. 보드가 최대 10x10이므로 구슬을 한 방향으로 굴릴 때 최대 8번 까지 이동한다. 시간복잡도는 약 O(8*2)*O(4^10) = P(16,777,216) 가 된다. 중간에 많은 연산이 생략되어 있지만 이정도면 문제의 시간제한 내에 해결할 수 있다. 2. solve() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 static void solve(int trial){ if(trial >= ans) return; int prevRy..
[ACMICPC] 1300 . K번째 수 1300번 K번째 수 문제 보러가기 🅰 설계 1. 어떤 방법을 쓸 것인가? 문제에서 주어지는 k는 최대 10^9 = 10억이다. NxN 행렬을 만들어서 직접 정렬해보는 방법은 할 수 없다. B 행렬은 정렬되어 있다. 정렬된 상태에서 빠르게 답을 찾는 방법으로 이분 탐색을 생각해 볼 수 있다. 2. 이분 탐색을 어떻게 적용하는가? A 행렬에서 모든 행을 돌면서, 각 행에 x보다 작거나 같은 숫자를 카운트하여 그 개수가 k보다 작으면 답이 될 수 없고, k보다 크거나 같으면 답이 될 수 있다. 위 방법을 이분 탐색으로 구현하면 된다. 시간 복잡도는 행의 개수 N에 이분탐색 범위 log(N*N)을 곱해 O(N*log(N^2)) = O(2N*log(N))이 된다. 3. 전체 코드 12345678910111213..
[ACMICPC] 1916 . 최소 비용 구하기 1916번 최소 비용 구하기 문제 보러가기 🅰 설계 1. 최단거리 알고리즘 A에서 B로 가는 가장 간단한 형식의 최단거리 문제인 것을 알 수 있다. 간단하게 어떤 알고리즘을 써야 하는지 생각해 봤다. 일단 조건을 확인한다. 도시의 개수 N(1
[HTTP] Header에서 "X-" prefix 지양 "X-" prefix는 왜 쓰는걸까? 가끔 Header를 보면 X-Auth 와 같은 "X-" prefix를 사용하는 것을 볼 수 있다. 이 "X-" prefix들은 "eXperimental" , "eXtension"의 약자로 표준 헤더와 비표준 헤더를 구분하기 위해 오랫동안 사용되었다. 왜 사용 지양으로 바뀌었는가? 이 "X-" prefix로 해결되는 문제보다 이로 인해 생기는 문제가 더 많아져, RFC6648에서는 "X-" prefix 사용을 지양하라고 말하고 있다. "X-" prefix 를 사용하여 생기는 문제로 비표준이었던 Header가 표준으로 바뀌었을 때 이를 처리하는 비용이 커진다고 한다. References https://datatracker.ietf.org/doc/html/rfc6648 r..