문제 출처: https://www.acmicpc.net/problem/2485 문제 시도 // 가로수 수: N (3 ~ 100,000) // 가로수 위치: x ( ~ 1,000,000,000) // 방정식? -> f(n) = a*(n-1) + b // 방정식 사용 시 b는 무조건 첫 번째로 주어진 가로수 위치 // 이후 가로수 위치를 받을 때마다 자신 바로 이전의 가로수 위치와의 거리를 계산 // 가장 최소 차이를 보이는 거리를 증가 기준점 a로 삼고, a가 1이 될 때까지 1씩 빼기 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Bu..
전체 글
I'm still working on it. We must be better.·CS
4. JWT (JSON Web Token) * JWT 구조와 장단점 JWT는 웹에서 사용자 인증을 위해 JSON 형식으로 암호화된 토큰을 의미합니다. header, payload, signature로 구성되며, 기존 세션 방식과는 다르게 stateless하다는 특징이 있습니다. Payload는 JSON 형식의 데이터로, 토큰을 누가 누구에게 발급했는지, 언제까지 유효한지 등의 정보를 담고 있으며 이렇듯 토큰에 담긴 사용자 정보 등의 데이터를 Claim이라고 합니다. Header와 Signature는 payload 변조를 막기 위해 존재하며 header에는 토큰의 타입과 알고리즘 종류, signature에는 토큰의 헤더, 그리고 서버에 감춘 비밀 값으로 암호화한 값을 저장합니다. JWT 방식은 세션과 다르..
·CS
1. 쿠키 (Cookie) 쿠키는 사용자를 기억하기 위해 서버가 사용자의 브라우저에 저장하는 데이터(작은 기록 정보 파일)입니다. * 쿠키 동작 원리 HTTP의 일종으로 사용자가 특정 웹 사이트를 방문할 경우, 1) 클라이언트가 페이지를 요청(request)하면 (사용자의 웹 사이트 접근) 2) 웹 서버는 쿠키를 생성하여 정보를 담아 클라이언트에게 응답(response)합니다. 3) 응답 받은 쿠키는 클라이언트 PC에 저장되며, 다시 서버에 요청 시 요청과 함께 쿠키를 전송합니다. 4) 동일 사이트 재방문 시 클라이언트의 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송합니다. * 쿠키 특징 1) 이름, 값, 만료일, 경로 정보로 구성되어 있습니다.. 2) 클라이언트는 총 300개의 쿠키를..
문제 출처: https://www.acmicpc.net/problem/1269 1. 문제 2. 시도 import java.io.*; import java.util.StringTokenizer; public class Main { private static final int range = 100_000_000; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int n1 = Integer.parseInt(st.next..
·알고리즘
4. 병합 정렬 병합 정렬은 분할 정복법에 해당하며, 하나의 큰 문제를 여러 개의 작은 문제로 쪼개 각각 해결 후 결과를 모아 원래의 문제를 해결하는 방법입니다. public class MergeSort { private static int[] sorted; // 합치는 과정에서 정렬하여 원소를 담을 임시 배열 public static void mergeSort(int[] a) { sorted = new int[a.length]; mergeSort(a, 0, a.length-1); sorted = null; } private static void mergeSort(int[] a, int left, int right) { if(left == right) return; int mid = (left + rig..
문제 출처: https://www.acmicpc.net/problem/25305 1. 문제 2. 시도 // bj-25305 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.rea..
더보기 본 게시글은 정규식의 기본 규칙과 사용법에 대한 이해를 위한 글로, adjh54님의 개인 블로그 글을 참고했습니다. 정규표현식 (짧게는 정규식)은 문자열의 패턴을 확인하고, 일부 일치하는 정보를 추출하며, 문자열이 특정 패턴에 맞는지 확인할 수 있는 형식 언어입니다. 1. 정규표현식 패턴 (Regular Expression Pattern) 1.1 문자 클래스 (Character classes) - 문자와 숫자를 구분하는 것처럼 문자 종류를 구분하는 데 사용합니다. 정규식 패턴 설명 패턴 종류 예제 \\w 문자만 허용 (a-z, A-Z, 0-9, ...) String regExp = "^[\\w]*$"; \\W 문자가 아닌 경우에만 허용 ! (a-z, A-Z, 0-9, ...) String regE..
문제 출처: https://www.acmicpc.net/problem/1436 1. 문제 문제 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 수란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는..
더보기본 게시글은 프로세스와 쓰레드의 차이를 바탕으로 멀티 프로세스와 멀티 쓰레드의 차이 그리고 그 쓰임새에 대해 정리하기 위한 목적으로 작성된 글입니다. 프로세스와 스레드프로세스는 여러 응용 프로그램이 독립적으로 실행되는 것을 의미합니다. 예를 들어, 웹 브라우저를 실행하면 각 탭은 별도의 프로세스로 실행됩니다. 스레드는 프로세스 내에서 실행되는 여러 실행 흐름으로, 하나의 프로그램 내에서 여러 작업을 동시에 처리할 수 있게 합니다. 예를 들어, 웹 브라우저가 여러 탭에서 동시에 여러 작업을 처리할 때 쓰레드가 사용됩니다. 멀티 프로세스와 멀티 스레드멀티 프로세스는 여러 프로세스가 동시에 실행되는 것을 의미합니다. 서버에서 여러 클라이언트 요청을 동시에 처리할 때 각 클라이언트 요청을 별도의 프로세스로..
일반적으로 SpringBoot의 인증/인가 필터를 JWT에 기반하여 구현합니다. 하지만, 한번 발행된 JWT의 유효 시간을 자체적으로 만료시킬 방법이 없다는 보안 상의 취약점을 해결하기 위해 JWT와 함께 언급되는 것이 Refresh Token입니다. Refresh Token을 구현하기 위한 참고한 모든 블로그들은 한결 같이 Redis를 통해 구현하는 것을 확인했습니다. 해당 게시글은 Redis의 특징을 통해 그 이유를 파악하고 그로 인해 얻을 수 있는 장점에 대한 내용으로 구성되었습니다. Redis의 특징1. 속도와 성능Redis는 메모리 기반 데이터 저장소로, 빠른 속도와 높은 성능을 제공합니다.이는 Refresh Token 같은 인증 데이터를 빠르게 읽고 쓸 수 있어 애플리케이션의 응답 시간을..