최장 증가 부분 수열(LIS) 알고리즘 - JAVA
·
알고리즘/개념
최장 증가 부분 수열(LIS, Longest Increasing Subsequence)최장 증가 부분 수열은 주어진 수열에서 오름차순으로 정렬된 가장 긴 부분수열을 찾는 알고리즘이다.예를 들어 주어진 수열이 위와 같을 때 만들어 질 수 있는 증가하는 부분 수열은 위와 같이 같은 색으로 묶인 {2, 4}, {1, 2, 3}, {1, 5, 6} 등 여러가지가 있을 수 있지만위 그림과 같이 원소 5개로 이루어진 {1, 2, 3, 5, 6}이 수열 A에서 가장 긴 증가하는 부분 수열이다. 이렇게 최장 증가 부분수열을 구하는 알고리즘에 대해 알아보자.풀이방법LIS 길이 구하기 - DP: O(n^2)LIS 길이 구하기 - 이분탐색: O(n log n)DP를 이용하여 구할 경우 구현이 간단하지만 시간복잡도가 O(n^..
[백준/BOJ] 11053 가장 긴 증가하는 부분 수열 - JAVA
·
알고리즘/문제풀이
백준 BOJ 11053 가장 긴 증가하는 부분 수열 - JAVA - 실버2문제https://www.acmicpc.net/problem/11053문제 분석조건첫째 줄에 수열의 크기, 둘째 줄에 수열이 주어짐가장 긴 증가하는 부분 수열의 길이 출력풀이방법LIS 알고리즘을 활용하여 풀이코드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 Bu..
[백준/BOJ] 14939 불 끄기 - JAVA
·
알고리즘/문제풀이
백준 BOJ 14939 불 끄기 - JAVA문제https://www.acmicpc.net/problem/14939문제 분석조건방의 크기는 10X10으로 일정하다.불이 켜진 곳은 'O', 꺼진 곳은 '#'으로 표현된다.스위치를 누른 곳과 상하좌우의 상태가 반전된다.모든 전구를 끄기 위해 최소한으로 눌러야 하는 스위치의 개수 출력모두 끌 수 없을 경우 -1 출력풀이방법하나의 스위치 상태를 바꾸면 상하좌우가 전부 반전되므로 1행의 상태가 결정이 된다면 그 아래는 자동으로 결정됨한 행의 스위치가 10개이므로 총경우의 수는 2^10개로 많지 않음위 행을 기준으로 켜진 스위치를 끈다면 해당 행의 윗 행은 전부 스위치가 꺼지게 됨마지막 행에서 위 행을 기준으로 스위치를 껐을 때 켜져 있는 스위치가 남아있을 경우 불가..
[데이터베이스] - DDL
·
DB
DDL(Data Definition Language) - 데이터 정의어MySql 기준데이터 베이스의 객체를 정의한다.객체는 table, view, index 등이 있다.테이블을 생성하거나 컬럼을 추가, 타입변경, 제약조건 지정, 수정하는 명령어데이터베이스1. 생성CREATE DATEBASE dbname;# 다국어 처리CREATE DATABASE dbnameDEFAULT CHARACTER SET utf8mb3COLLATE utf8mb3_general_ci;# 이모지 문자 처리CREATE DATABASE dbnameDEFAULT CHARACTER SET utf8mb4COLLATE utf8mb4_general_ci;2. 변경ALTER DATABASE dbnameDEFAULT CHARACTER SET utf8m..
트리 순회(전위, 중위, 후위) - JAVA
·
알고리즘/개념
트리의 순회 방법에 대해 알아보자!트리의 순회란 트리 구조의 자료형에서 모든 노드를 한번씩 방문하는 체계적인 방법을 말한다. 대표적으로 본 포스팅에서 다룰 전위순회(preorder[프리오더]), 중위순회(inorder[인오더]), 후위순회(postorder[포스트오더])가 있다. 알고리즘 문제에서 다룰 때 한국어로 다룰때도 있지만 영어 명칭으로 다룰때도 있고 많이 혼용되므로 정확한 명칭을 전무 알아두는 것이 좋다. 이진트리를 기준으로 각 순회방법에 대해 알아보자!개요결론부터 말하자면 위의 이미지를 이해하면 된다.전위순회(preorder)모든 순회의 시작은 루트노드부터 시작한다. A를 기준으로 B와 그 아래 트리를 왼쪽 서브트리, C 아래를 오른쪽 서브트리라 한다.전위순회는 현재 노드를 방문하고 왼쪽 서브..
[SpringBoot] 스프링부트 프로젝트 시작하기 - 6. 토큰 이용하여 인가된 사용자 걸러내기
·
Spring
버전SpringBoot 3.3.0Java 17JWT 0.12.5목표토큰을 통해 인가된 사용자 구분하기Deprecated 된 함수 사용하지 않기구현이전 포스팅에서 로그인 시 토큰을 발행하는 부분까지 구현을 했다. 이번 포스팅에서는 해당 토큰을 이용하여 회원정보 요청을 보내고, 인가된 사람에게만 정보를 반환하는 부분을 구현해본다.MemberInfoResponsepackage com.study.springStarter.member.controller.response;import com.study.springStarter.member.entity.Member;import lombok.Data;@Datapublic class MemberInfoResponse { private String loginId; ..