본문 바로가기

전체 글31

JWT, Session 인증에 대해 1. 기존 방식 아이디, PW를 저장해놓고 계속 서버로 쏘는 방식 → 단점: 한번 탈취당하면 큰일난다. 2. 세션 인증 방식 아이디, PW를 받으면 서버가 세션을 생성한다. 세션 아이디 기준으로 정보를 저장함. 세션을 저장해놓는 세션 저장소가 있음. 사용자는 세션 아이디를 로컬에 저장한다. 사용자는 서버에 요청을 보낼 때마다 쿠키에 있는 걸 전달하고, 서버는 세션아이디가 서버에 저장된 형태인지 확인한다. 장점: 탈취된 세션의 경우 세션을 강제 만료시킬수 있다. 단점: 세션이 많아지면 복잡해짐, 만약 유저가 1000000000명이 동시에 로그인한다면?! 3. JWT 인증 방식 세션이 서버에 인증 정보를 기록했다면 토큰은 인증받은 사용자에게 부여해서 인증 정보를 사용자가 가지고 있음. 헤더, 페이로드, 서명.. 2023. 1. 10.
[C++] 문자열로 곱셈과 덧셈 구현하기 C++에서 long long int에도 담기지 않는 수가 있다. 9,223,372,036,854,775,807이 가장 큰 수라고 하는데, 그것보다 더 큰 수를 계산해야 하는 경우는 어떻게 해야 할까? 2^1239 을 계산하고 싶을 땐 어떻게 해야 할까? 그 방법 중 하나가 문자열로 곱셈과 덧셈을 구현하는 것이다. 원리는 아주 간단하다. 손으로 두자릿수의 곱셈과 덧셈을 해보자. 한 자리씩 더하거나 곱할 때 carry가 발생하면 다음 자리수로 넘겨서 더해준다. 따라서 손으로 하는 필산을 프로그램으로 구현한 것이 되겠다. 1. sum두 수를 문자열로 받고, 뒷 자리수부터 시작해서 carry 가 발생할 경우 자리수 올림까지 고려한다. 두 수의 덧셈을 문자열로 반환한다.이때 a[Sizea]에서 0을 빼는 건 뭐냐.. 2022. 12. 5.
[BOJ][Python3]2504.괄호의 값 문제 유형: 구현 요번에는 어떻게든 풀었지만, 좋지 않은 코드의 예시다. stack에 괄호 넣고 빼면서, 대체 어떻게 덧셈 + 곱셈을 구현하지? 라는 고민을 정말 많이 했다. 재귀로도 해보고, visited 배열을 만들기도 해보고 시도를 여러가지 하다 일반화가 잘 되지 않았다. 나름 해결한 방법으로는 score에 값을 하나씩 넣고 그 값에 대한 괄호 depth를 계산한 뒤, 같은 depth인 괄호는 더하고, 1 작은 depth를 만나면 곱하는 식으로 구현했다. 풀이 설명 ( () [ [] [] ] ) 이면 하나씩 짝 맞춰질때마다 스택에서 빼고 score에 append하면 score = [ 2, 3, 3, 3, 2] depth = [1, 2, 2, 1 , 0] 이다. 왼->오로 탐색하면서 최대 depth .. 2022. 11. 27.
[BOJ][Python3]15686.치킨 배달 문제 유형: 구현 collection에 combination을 쓰면 된다. 여담이지만 pypy로 채점 돌렸을때 메모리+런타임으로 1등 먹어서 살짝 기분이 좋았다 ㅎㅎ 시간이 지나면 한순간의 꿈일 것 같지만... 문제 포인트는 다음과 같다 1) 입력을 받으면서 집, 치킨집 위치를 튜플로 저장해서 배열에 넣어두기 2) 미리 각 집의 모든 치킨집 위치에 대한 걸 계산해서 배열에 저장해 두기(그렇다면 나중에 치킨집을 고르고 일일히 계산하지 않아도 된다) 3) 치킨집의 경우의 수를 combination으로 뽑고, 각 경우의 치킨 거리 계산하기 처음에 문제를 잘못 이해해서 현재 치킨집 수 = 남길 치킨집 수의 경우 일일히 비교하는 로직을 안 쓰고 바로 답을 구하는 모종의 방법을 사용했는데 그 로직에 문제가 있어서 .. 2022. 11. 24.