-
IntelliJ(인텔리제이) 단축키
파란글씨는 윈도우와 Mac 사이에 명령어 차이가 클 경우이다 일반적으로 아래와 같이 상응한다 윈도우 Mac Ctrl ⌘ (or ⌃) Alt ⌥ Shift ⇧ 편집&이동 윈도우 Mac 설명 Ctrl + D ⌘ + D 한줄 복사 Ctrl + Y <span style="colo...
-
[스프링부트] Spring Security
Security 개념 Spring Security : 보안솔루션을 제공하는 스프링 하위 프레임워크 Spring Security는 기본적으로 인증 절차를 거친 후 인가 절차를 진행한다 Principal을 아이디, Credential을 비밀번호로 사용하는 Credential 기반 인증 방식을 사용한다 인증(Authentication) : 자신이 누구인지 확인하는 작업 ex) 로그인 권한(Authorization) : 특정 부분에 접근할 수 있는지 확인하는 작업 ex) 등급 Spring Sec...
-
동적 계획 알고리즘(Dynamic Programming)
동적계획 알고리즘이란? 크고 복잡한 문제를 나누어 작고 간단한 여러 문제로 푸는 방식 분할 정복 알고리즘 : 간단한 문제가 될때 까지 문제를 나눈 다음 답을 도출하고 그 답들을 조합하여 원래 문제의 답을 도출 최적 부분구조(Optimal Substructure) : 작은 문제의 최적 솔루션이 큰 문제의 최적 솔루션에 포함 나누어진 문제를 풀다보면 재귀로 인한 중복된 하위 문제가 나타나 효율이 낮아지게 된다 DP테이블을 이용하여 이전에 계산했던 값을 저장해 재사용하여 계산횟수를 줄일 수 있다 메모이제이션(Memoization) : 한번 계산...
-
DFS/BFS - 백트래킹/최단경로
◼︎ 그래프탐색의 유형 1. 격자형 행렬처럼 n*m의 공간에 데이터가 입력된다 문제에 따라 상하좌우(4방향) 또는 대각선까지 포함한(8방향)으로 탐색한다 2. 정점형 한 순간의 상태를 정점으로 표현하고 상태전이를 간선으로 표현하여 그래프를 만들 수 있다 문제에 주어진 조건을 따라 정점을 만들어 나간다 DFS (Depth-First Search) 깊은 부분을 우선적으로 탐색하는 알고리즘 스택이나 재귀함수 이용 모든 노드를 방문할 경우 사용한다 문제에 제한이 있는 경우 가지치기와 백트래킹으로 경우를 줄일 수 있다 재귀함수를 사용할 경우 종료조건을 정확하게 명시해야 한...
-
브루트 포스(Brute-Force) - 완전탐색
브루트 포스(Brute Force) 알고리즘 Brute(무식한) + Force(힘) 의 조합어로 무식하게 모든 경우의 수를 다 탐색하여 문제를 해결하는 방법 모든 경우의 수를 다 탐색하기 때문에 완전탐색이라고도 한다 효율은 매우 떨어지지만 100% 확률로 정답을 찾아낸다 선형구조는 순차탐색, 비선형구조는 DFS/BFS 등을 사용한다 모든 경우의 수를 다 탐색해야 하기 때문에 시간복잡도가 O(n!) or O(2n)가 되기 때문에 문제에서 n은 매우 작게 제시되는 편이다 구현방법 1. 반복문(for문) 사용 반복문을 사용하여 모든 경우를 순차탐색하여 정답을 도출한다 n = int(inp...