본문 바로가기

728x90

분류 전체보기

(405)
[백준] 단지번호붙이기 (2667번) 문제 흐름문제 목표N x N 크기의 이진 행렬이 주어졌을 때, 1로 이루어진 연결된 집합(단지)을 찾아야 합니다.각 집합의 크기를 계산하여 총 단지 수와 단지별 집의 개수를 출력합니다.연결은 상하좌우 인접한 1들을 통해 이루어지며, 대각선 연결은 포함되지 않습니다.입력 설명첫 줄에 지도 크기 N이 주어집니다.이후 N개의 줄에 0과 1로 이루어진 행렬이 주어집니다. 1은 집이 있는 곳, 0은 빈 공간을 의미합니다.제약 조건최대 크기가 25x25인 행렬입니다.깊이 우선 탐색(DFS)을 사용해 모든 단지를 탐색하고 각 단지의 크기를 구합니다. 핵심 아이디어DFS(깊이 우선 탐색)를 사용해 한 번 방문한 집(1)은 다시 방문하지 않도록 방문 체크를 합니다.단지 내의 집을 모두 탐색할 때마다 단지 크기를 계산하고..
[백준] 스타트와 링크 (14889번) 문제 흐름문제 목표T명이 주어졌을 때, 두 팀으로 나누고 팀 능력치 차이의 최소값을 구하는 문제입니다.각 팀의 능력치는 해당 팀의 두 사람 사이 능력치 합으로 계산합니다.두 팀의 능력치 차이가 최소가 되도록 팀을 나누는 것이 핵심입니다.입력 설명첫 줄에 사람 수 T가 주어집니다 (항상 짝수).이후 T x T 크기의 능력치 행렬이 주어지며, 행렬의 (i, j)는 i번과 j번 사람이 같은 팀일 때 기여하는 능력치를 의미합니다.제약 조건사람 수가 최대 20명이므로 가능한 팀 조합의 경우의 수는 조합(C(T, T/2))입니다.완전탐색을 이용해 각 조합을 모두 탐색하면서 최소 능력치 차이를 찾습니다. 핵심 아이디어완전 탐색(백트래킹)을 사용해 모든 팀 조합을 탐색합니다.사람들을 두 팀으로 나누고, 각각의 팀 능력..
[백준] RGB거리 (1149번) 문제 흐름문제 목표:각 집을 세 가지 색(빨강, 초록, 파랑) 중 하나로 칠합니다.단, 인접한 두 집은 같은 색으로 칠할 수 없습니다.모든 집을 칠할 때의 최소 비용을 구해야 합니다.입력 설명:첫 줄에 집의 개수 n이 주어집니다.이후 n개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠할 때 드는 비용이 주어집니다.제약 조건:DP(동적 계획법)을 사용해 인접 집의 색이 겹치지 않도록 최소 비용을 누적합니다. 핵심 아이디어DP(동적 계획법)으로 최소 비용을 누적 계산합니다.각 집을 특정 색으로 칠할 때 최소 비용은 이전 집에서 자신과 다른 색을 선택한 최소 비용과 현재 색의 비용을 더한 값입니다.마지막 집까지 누적된 비용 중 최소값을 결과로 출력합니다. 알고리즘 흐름입력받기:n개의 집과 각 색의 비용을 2차원..
[Spring Boot] JWT 사용하기 JWT 의존성 설정 및 토큰 발행하기이 가이드는 Spring 애플리케이션에서 JWT를 사용하기 위한 의존성 설정과 JWT 토큰을 생성하고 검증하는 방법을 설명합니다. JWT(JSON Web Token)는 클라이언트와 서버 간의 인증 정보를 안전하게 전송하기 위해 사용됩니다. 1. JWT 의존성 설정하기JWT를 사용하기 위해 필요한 의존성을 추가합니다.Gradle 설정: build.gradle 파일에 아래 코드를 추가하세요.dependencies { implementation 'io.jsonwebtoken:jjwt-api:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-jackso..
[백준] 하노이 탑 이동 순서 (11729번) 문제 흐름목표: 주어진 n개의 원판을 첫 번째 기둥(스택)에서 세 번째 기둥으로 옮기는 것이 목표입니다. 단, 한 번에 한 개의 원판만 옮길 수 있으며, 큰 원판이 작은 원판 위에 놓일 수 없습니다.출력:최소 이동 횟수를 출력합니다.각 이동 경로를 (from, to) 형식으로 출력합니다. 핵심 아이디어재귀적 접근:원판이 1개일 때는 바로 목표 기둥으로 옮기면 됩니다.원판이 여러 개일 경우, 재귀적으로:상위 원판 n-1개를 보조 기둥으로 이동합니다.가장 큰 원판을 목표 기둥으로 이동합니다.보조 기둥에 있는 n-1개의 원판을 목표 기둥으로 이동합니다.스택 사용: 각 기둥은 스택으로 구현되어, 원판 이동 시 올바른 순서를 유지합니다. 알고리즘 흐름초기화 (initHanoi):세 개의 기둥(스택)을 초기화합니다..
[백준] AC (5430번) 문제 흐름주어진 문제는 덱(Deque) 자료구조를 이용해 숫자 리스트에 대한 명령을 처리하는 것입니다.명령어에는 순서 반전('R')과 원소 삭제('D')가 포함되며, 이 명령을 순차적으로 수행한 결과를 배열 형태로 출력해야 합니다.덱이 비어 있는 상태에서 삭제 명령을 수행하면 "error"를 출력하고 해당 테스트 케이스를 종료합니다.중요한 부분은 덱의 순서 반전을 효율적으로 처리하면서 올바르게 결과를 출력하는 것입니다. 핵심 아이디어덱(Deque) 활용덱 자료구조는 앞뒤 양쪽에서 데이터를 삽입하고 삭제할 수 있어 양방향 연산이 빠르게 수행됩니다.순서 반전 플래그 사용매번 데이터를 뒤집는 대신, reverseFlag를 이용해 마지막 출력 시 역방향으로 처리합니다.이 접근법은 시간 복잡도를 줄여 효율성을 높..
[Spring Boot] JWT 의존성 설정하기 Spring에서 JWT 사용하기JWT를 활용하여 Spring 애플리케이션에 인증 및 인가 기능을 추가하려면 필수 의존성을 설정해야 합니다. 아래 과정에서는 build.gradle 파일을 수정하는 방법과 의존성 설정을 설명합니다. 1. JWT란?JWT에 대해 더 알고 싶다면 JWT에 대한 설명을 먼저 확인하세요.  2. 의존성 설정하기Spring 프로젝트에서 JWT를 사용하려면 필수 의존성을 추가해야 합니다. 이 의존성들은 JWT 생성, 파싱, 서명 처리에 사용됩니다. 3. 의존성 추가 방법build.gradle 파일 열기프로젝트 루트 디렉터리에 있는 build.gradle 파일을 열어주세요. 이 파일은 프로젝트의 의존성을 관리하는 설정 파일입니다.Maven Central Repository 추가repos..
[네트워크] JWT(Json Web Token) JWT (JSON Web Token)란?JWT는 JSON Web Token의 약자로, JSON 형식의 데이터를 사용해 자가 포함(Self-contained) 방식으로 정보를 안전하게 전달하는 토큰 기반 인증 방식입니다. JWT는 URL, HTTP 헤더, HTML Form 등 다양한 방식으로 전송할 수 있으며, 서버와 클라이언트 간의 인증 정보를 담아 통신합니다.  JWT의 구성JWT는 Header, Payload, Signature의 세 가지 부분으로 구성되며, 각 부분은 Base64 URL 인코딩되어 마침표(.)로 구분됩니다. 예를 들어, 다음과 같은 형태를 가집니다:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 // HEADER.eyJ1c2VySWQiOjEyMywiZXhwIjoxN..

728x90