ALL

    [Algorithm/Python] 서로소 집합(Disjoint Sets) 알고리즘이란?

    [Algorithm/Python] 서로소 집합(Disjoint Sets) 알고리즘이란?

    들어가며본 포스팅에서는 서로소 집합과 구현 방식에 대해 소개합니다.📌 서로소 집합이란?서로소 집합(Disjoint Sets)란 공통 원소가 없는 두 집합을 의미합니다. 예를 들어 {1, 2}와 {3, 4}는 서로소 관계이지만, {1, 2}와 {2, 3}은 서로소 관계가 아닙니다. 서로소 집합 자료구조는 union과 find라는 2개의 연산이 이루어집니다. union(합집합)이란, 하나의 집합으로 합치는 연산을 의미하며, find(찾기) 연산은 특정 원소가 어느 집합에 속하였는지를 찾아내는 연산입니다. 1️⃣ union(합집합) 연산을 통해, 서로 연결된 두 개의 노드를 확인합니다. - 1 ) 노드 A와 노드 B의 루트 노드인 A'와 B'를 찾습니다. - 2 ) 루트 노드 A'를 루트 노드 B'의 부모 노..

    [Algorithm/Python] 플로이드 워셜 알고리즘이란?

    [Algorithm/Python] 플로이드 워셜 알고리즘이란?

    들어가며 본 포스팅은 플로이드 워셜 알고리즘에 대해 소개합니다. 📌 플로이드 워셜 알고리즘 플로이드 워셜(Floyd-Warshall) 알고리즘이란, 모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구해야 하는 경우 사용하는 알고리즘입니다. 기존에 소개된 다익스트라 알고리즘에서의 최단 거리 테이블에서 거리가 가장 짧은 노드를 탐색해야 했던 과정을 생략할 수 있다는 점이 차이점입니다. 모든 노드가 다른 노드로 가는 최단 거리의 정보를 2차원 리스트에 담아 저장합니다. 노드의 개수 N만큼 점화식에 맞게 2차원 리스트를 갱신하므로 다이나믹 프로그래밍으로 볼 수 있습니다. ☑️ 시간 복잡도 모든 최단 경로를 2차원 리스트에 담아 처리하므로 매번 $O(N^2)$의 시간이 소요되며, 노드의 개수 N만큼 $O(N..

    [Algorithm/Python] 다익스트라 최단 경로 알고리즘이란?  || dijkstra

    [Algorithm/Python] 다익스트라 최단 경로 알고리즘이란? || dijkstra

    들어가며본 포스팅에서는 다익스트라 최단 경로 알고리즘에 대해 소개합니다.📌 다익스트라 최단 경로 알고리즘이란?다익스트라 최단 경로 알고리즘이란, 가장 짧은 경로를 찾기 위한 알고리즘으로, 음의 간선(0보다 작은 값을 가진 간선)이 없을 때에 적용할 수 있는 알고리즘입니다. 1️⃣ 출발 노드를 설정합니다.2️⃣ 최단 거리 테이블 초기화(무한으로 설정)합니다.3️⃣ 방문하지 않은 노드 중에 최단 거리 테이블에서 최단 거리가 가장 짧은 노드를 선택합니다.4️⃣ 선택한 노드를 거쳐 다른 노드로 가는 거리를 계산합니다.5️⃣ 계산된 거리가 최단 거리 테이블의 거리보다 짧을 경우, 갱신합니다.6️⃣ 위의 3️⃣4️⃣5️⃣를 반복합니다.  가장 최단 거리의 노드를 선택하여 주변 간선을 확인합니다. 더 짧은 거리가 ..

    [Algorithm/Python] 이진 탐색(Binary Search)란?

    [Algorithm/Python] 이진 탐색(Binary Search)란?

    들어가며 본 포스팅에서는 순차 탐색(Sequential Search)과 이진 탐색(Binary Search)에 대해 소개합니다. 📌 순차 탐색이란? 순차 탐색(Sequential Search)이란, 특정 데이터를 찾기 위해 앞에서부터 차례대로 값을 비교해나가는 탐색 방식입니다. 1️⃣ 가장 첫 번째 데이터를, 찾고자하는 데이터(타겟)과 비교합니다. 2️⃣ 값이 서로 일치하지 않는다면, 다음 데이터로 이동하여 비교합니다. 3️⃣ 이를 반복하며 일치할 때, 탐색을 종료합니다. ✅[ CODE ] def sequential_search(n, target, arr): for i in range(n): if arr[i] == target: return i + 1 i + 1 번째의 데이터가 타겟과 동일하다는 결과를 ..

    [Spring] Exception 처리 과정 || ErrorCode, CustomException, ControllerAdvice

    ❏ ErrorCodeErrorCode는 Enum 타입으로, 반복적으로 사용되는 Error 상태와 메시지를 포함합니다. Enum 타입으로 미리 에러코드와 메시지를 정의해두며, 편리하게 활용합니다.@Getter @RequiredArgsConstructor public enum ErrorCode { INVALID_TOKEN(401, "Token이 유효하지 않습니다."), ACCESS_DENIED(403, "접근 권한이 없습니다."), MEMBER_NOT_FOUND(404, "존재하지 않는 회원입니다."), AUTHENTICATION_FAILED(400, "아이디 또는 비밀번호가 옳지 않습니다."), BOARD_NOT_FOUND(404, "존재하지 않는 게시물입니다."), BOARD_AUTHOR_MISMATCH..

    [Error] unable to evaluate the expression method threw 'org.hibernate.lazyinitia

    [Error] unable to evaluate the expression method threw 'org.hibernate.lazyinitia

    📌 오류 발생 원인Member member = memberRepository.findById(Long.valueOf(memberId)) .orElseThrow(() -> new UsernameNotFoundException("존재하지 않는 계정입니다.")); Authentication authentication = jwtProvider.getAuthentication(member);먼저, memberRepository에서 findById를 통해 Member(회원) 엔티티를 조회해온다. public Authentication getAuthentication(Member member) { MemberContext memberContext = new MemberContext(member); return new..

    [OS] 운영체제(Operating System)이란? || 추상화, 필요성, 기능, Kernel

    들어가며본 포스팅에서는 운영체제의 개념과 필요성, 운영체제의 기능, Kernel에 대해 소개합니다.📌 운영체제(OS)운영체제란 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서, 사용자가 하드웨어를 쉽고 효율적으로 사용할 수 있는 프로그램의 모임이자, 시스템 소프트웨어이다. 추상화(abstraction)을 제공하는 프로그램이라고도 정리해볼 수 있다. 어떻게 하드웨어를 쉽고 효율적으로 사용할 수 있도록 하는가에 대해 이야기 해보자면, 추상화라는 개념을 알아야 한다.❔ 추상화추상화(Abstraction)란, 복잡한 시스템 및 개념을 단순화하는 것이다. 소프트웨어를 설계할 때에도 추상화하여 미리 포괄적인 개념을 설계한 후에 구체화하여 진행한다. 따라서, 복잡한 시스템이더라도 사용자가 보다 쉽고 직관적인 방식..

    인증 방식 (Cookie & Session & Token) + JWT

    JWT 인증 방식에 대해 공부해보다가, 다른 인증 방식과의 차이를 정리해두어야겠다는 생각이 들었다. 클라이언트의 인증을 위한 대표적인 방식 Cookie, Session, Token을 다뤄보자 📌 Cookie 인증쿠키(Cookie)는 사용자의 브라우저에 저장되어 통신할 때 포함되어 전달한다. 사용자의 브라우저에 저장되는 데이터들이므로, 고유 정보 식별이 가능하다. 1. 클라이언트가 서버에 요청(Request)를 보낸다. 2. 서버는 클라이언트의 요청에 대한 응답(Response)을 작성하고, 응답 헤더의 Set-Cookie에 사용자의 브라우저에 저장될 데이터를 담아 보낸다. 3. 이후 해당 클라이언트는 요청을 보낼 때마다, 저장된 쿠키를 요청 헤더의 Cookie에 담아 보내게 된다. 4. 따라서, 서버는 ..

    XML Web Services (+ HTTP, SOAP, WSDL, UDDI), 시나리오

    XML Web Services (+ HTTP, SOAP, WSDL, UDDI), 시나리오

    XML Web Services 관련 기술로는 HTTP, SOAP, WSDL, UDDI가 있다. 📌 HTTPHyperText Transper Protocol의 약자로, 서로 다른 시스템을 통신할 수 있는 프로토콜이다. HyperText라는 것은, 컴퓨터 화면 및 전자 기기에서 볼 수 있는 텍스트 데이터를 의미하는데, 이것을 빠르게 네트워크 상에서 교환하기 위한 프로토콜인 것이다. Client - Server 웹에서 이루어지는 대표적인 인터넷 프로토콜이며, 클라이언트에서 URL을 통해서 서버에 요청(Request)을 하면, 서버에서는 해당 요청에 대한 응답(Response)을 하는 형태로 동작한다. Stateless 서버에서는 클라이언트에 대한 상태를 전혀 보관하지 않는다. Connectionless 또한,..

    SOA(Service Oriented Architecture)란?

    SOA(Service Oriented Architecture)란?

    📌 ServiceSOA를 알기 전, 서비스란 무엇인지 간단하게 설명해보자면, 우리가 컴퓨터에서 실행하는 프로그램, 애플리케이션을 소프트웨어라 한다. 이러한 소프트웨어를 다운로드하여 컴퓨터, 모바일에서 사용을 하곤 하는데, 서비스라는 것은 인터넷, 네트워크를 통해 제공되는 정보 및 기술을 의미한다. 소프트웨어와 함께 제공되어 설치하지 않고도 인터넷을 통해 서비스에 접속하여 이용할 수 있다. ✅ 구조Service Interface : 서비스 인터페이스는 서비스를 호출하기 위한 통신 방법이 정의된다. 이용자는 이를 제공받아 서비스를 이용한다. Service Implementation : 실질적으로 서비스가 구현되어 있는 곳이다. 서비스 이용자들은 서비스 구현이 어떻게 이루어져있는 지에 대해서는 몰라도 인터페이..