분류 전체보기 161

[자료구조] 큐(Queue)

1. 개념 한 쪽에서는(맨 뒤) 넣을 수만 있고, 다른 한 쪽에서는(맨 앞) 지울 수만 있는 자료구조 2. 특징 선입선출 방식이다. 즉 먼저 들어온 게 먼저 나간다 3. 자바에서 구현 Queue의 인터페이스가 있고, 이 인터페이스를 구현한 클래스를 사용해야 한다. 그 클래스에는 LinkedList ArrayDeque PriorityQueue 가 있다. 4. 연산 1) offer Enqueue 수행. 큐가 꽉 차 있으면 false 리턴 2) add Enqueue 수행. 큐가 꽉 차 있으면 예외 발생 3) poll Dequeue 수행. 큐가 비어 있으면 null 리턴 4) remove Dequeue 수행. 큐가 비어 있으면 예외 발생 5) clear 한 번에 모든 요소 제거 6) peek 큐의 첫 번째 데이..

자료구조 2023.03.26

[자료구조] 덱(Deque)

1. 개념 앞으로 넣을 수 있고 뺄 수 있으면서, 뒤로도 넣을 수 있고 뺄 수 있는 자료구조 2. 특징 스택과 큐의 특징을 모두 가질 수 있음 3. 자바에서 구현 덱의 여러 연산을 모아 놓은 인터페이스가 있고, 이 인터페이스를 실제로 구현한 여러 클래스가 있다. ArrayDeque, LinkedBlockingDeque, ConcurrentLinkedDeque, LinkedList 가 클래스의 종류며 구현 방법에 따라 종류가 나뉜다. 1) ArrayDeque array로 구현 내부 배열의 크기가 resizable 함 용량 제한이 없음, 기본 크기를 16으로 하고 용량 넘어가면 2배씩 증가시킴 Thread-Safe하지 않아서 멀티 쓰레드 환경에서는 문제가 있음 null 추가 불가 끝에 삽입, 삭제만 할 경우..

자료구조 2023.03.24

[시큐리티] 필터

1. 개념 요청을 수신하고 요청에서 요구하는 논리를 실행하며 실행을 모두 마치고 난 이후에는 체인의 다음 필터로 요청을 넘긴다. 예를 들어 숟가락을 쥔다, 숟가락으로 밥을 푼다, 푼 받을 입에 가져다가 넣는다, 씹는다 이런 과정이 있을 때 숟가락을 쥐는 것 부터 씹는 것까지의 전체 과정을 체인이라고 본다. 그리고 각 행위를 필터라고 본다. 2. 특징 스프링 시큐리티는 기본 필터도 제공하고, 맞춤형으로 필터를 새로 정의하는 것도 가능하게 함. 그리고 새롭게 정의한 필터를 체인에 추가할 수 있음 필터는 책임을 관리자에게 위임함 스프링 시큐리티 아키텍처의 필터는 일반적인 HTTP 필터 여러 필터가 같은 순서값을 가질 수 있는데, 스프링 시큐리티는 같은 순서값일 경우 어떤 걸 먼저 호출할 지 딱히 정해놓지 않는..

Spring/security 2023.03.23

[알고리즘] 슬라이딩 윈도우

1. 개념 2개의 포인터로 범위를 지정한 다음 범위를 유지한 채로 이동하며 문제를 해결하는 알고리즘, 해당 범위에서 특정 조건에 맞는지 확인한다 복도 전체의 길이가 10, 창문의 크기가 3이라고 하자. 크기가 3인 창문을 복도 처음에 놓고 1씩 옮기며 조건에 맞는지를 확인하는 것을 슬라이딩 윈도우라고 할 수 있다. 2. 특징 O(N)의 시간복잡도를 가짐 3. 관련 문제 백준 12891 GitHub - Lee-Min-Jung/coding_test_practice Contribute to Lee-Min-Jung/coding_test_practice development by creating an account on GitHub. github.com 백준 11003

알고리즘 2023.03.23

[알고리즘] 투 포인터

1. 개념 두 개의 포인터를 사용하는 알고리즘, 보통 left와 right, start와 end 등으로 정한다 2. 투 포인터 이동 원칙 문제마다 이동 원칙은 달라짐 대체로 수가 차례대로 정렬되어 있을 때 적용 1) start와 end가 같이 처음부터 시작 sum은 start부터 end까지의 합을 의미함 sum N 주어진 수 보다 합이 더 커졌으니 이때의 start부터 end는 정답이 될 수 없는 범위인 것. 그러니 범위의 변경이 필요. 그런데 end를 증가시키면 소용이 없음. 어차피 더 커지기만 하니까. 그래서 su..

알고리즘 2023.03.22

[시큐리티] 권한과 역할제어

1. 권한 부여 1) 개념 식별된 클라이언트가 요청된 리소스에 엑세스할 권한이 있는지 시스템이 결정하는 프로세스 2) 특징 인증 흐름을 완료한 후 요청을 권한 부여 필터에 위임하고, 필터는 구성된 권한 부여 규칙에 따라 요청을 허용하거나 거부함. 즉, 항상 인증 이후에 수행됨 인증 프로세스 도중 UserDetailsService는 사용자의 권한을 포함한 모든 세부 정보를 얻음. 애플리케이션은 사용자를 성공적으로 인증한 후 GrantedAuthority 인터페이스로 나타내는 권한으로 권한 부여를 수행함 3) 과정 2. GrantedAuthority 1) 개념 사용자가 수행할 수 있는 작업을 GrantedAuthority 인터페이스로 나타냄 2) 특징 UserDetails는 GrantedAuthority 인..

Spring/security 2023.03.21

[자바 개념] StringTokenizer

1. 개념 문자열이 특정 구분자로 연결되어 있을 경우, 구분자를 기준으로 부분 문자열을 분리하기 위해 사용하는 java.util 패키지에 있는 클래스 2. 방법 StringTokenizer st = new StringTokenizer("문자열", "구분자") 3. 특징 구분자에 공백을 주면 문자 하나씩 구분된다 4. 메서드 countTokens() 꺼내지 않고 남아 있는 토큰의 수 hasMoreTokens() 남아 있는 토큰이 있는지 여부 nextToken() 토큰을 하나씩 꺼내옴 5. split와 stringTokenizer의 차이 split stringTokenizer 위치 String 클래스에 있는 메서드 java.util 패키지에 있는 클래스 구분 방법 정규표현식으로 문자열 구분 문자 또는 문자열..

자바 2023.03.19

[자바 개념] IO(입출력)

1. 스트림 1) 개념 데이터가 입출력되는 곳 2) 종류 구분 바이트 기반 스트림 문자 기반 스트림 입력 스트림 출력 스트림 입력 스트림 출력 스트림 최상위 클래스 InputStream OutputStream Reader Writer 하위 클래스 XXXInputStream XXXOutputStream XXXReader XXXWriter 입력 스트림 프로그램이 데이터를 입력받음 출력 스트림 프로그램이 데이터를 보냄 바이트 기반 스트림 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 받고 보낼 수 있음 문자 기반 스트림 문자만 받고 보낼 수 있도록 특화 3) 특징 java.io 패키지에서 사용 가능 2. Reader 1) 개념 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스. 모든 문자 기반 입력 스..

자바 2023.03.19

[알고리즘] 구간 합

1. 개념 배열 A의 합 배열을 구해서 기존 배열의 일정 범위의 합을 구하는 방법 2. 합 배열 1) 개념 배열 A의 인덱스 0부터 인덱스 i까지 더한 값을 가지고 있는 배열 2) 공식 배열 A = {5, 4, 3, 2, 1} S[1] = A[0] S[2] = A[0] + A[1] S[3] = A[0] + A[1] + A[2] S[4] = A[0] + A[1] + A[2] + A[3] S[5] = A[0] + A[1] + A[2] + A[3] + A[4] int[] A = {5, 4, 3, 2, 1}; int[] S = new int[A.length + 1] // 합 배열 index를 1부터 시작하는거라고 하기 위해 길이를 1 늘림 for(int i = 1; i

알고리즘 2023.03.16