Computer Science

Computer Science/Algorithm

[Python] 완전 탐색(Brute Force)

핵심 개념완전 탐색(Brute Force)은 가능한 모든 경우의 수를 전부 탐색하여 정답을 찾는 방법이다. 최적화 없이 모든 경우를 시도하기 때문에 구현이 간단하지만, 경우의 수가 많아지면 비효율적일 수 있다.  시간 복잡도완전 탐색의 시간 복잡도는 일반적으로 \( O(N!) \) 또는 \( O(2^N) \) 등 매우 높은 편이다. 예를 들어, n개의 요소가 있을 때 가능한 모든 순열을 탐색하는 경우 \( O(N!) \)이 된다. 따라서 입력 크기가 커질수록 실행 시간이 급격히 증가한다. 동작방식 & 구현완전 탐색은 보통 다음과 같은 방식으로 동작한다.가능한 모든 경우의 수를 생성한다.각 경우가 문제의 조건을 만족하는지 확인한다.원하는 결과를 찾으면 반환하거나 최적의 해를 갱신한다. 활용 가능한 문제 유..

Computer Science/Algorithm

[Python] 너비 우선 탐색(BFS, Breadth-First Search), 깊이 우선 탐색(DFS, Depth Frist Search)

핵심 개념DFS(Depth-First Search, 깊이 우선 탐색)와 BFS(Breadth-First Search, 너비 우선 탐색)는 그래프 탐색 알고리즘이다. DFS는 한 방향으로 끝까지 탐색한 후 돌아오는 방식이며, BFS는 가까운 노드부터 탐색하는 방식이다.  시간 복잡도두 탐색 방법의 시간 복잡도는 일반적으로 \( O(V + E) \)이다. 여기서 \( V \)는 vertex(or 노드) 개수, \( E \)는 edge(간선) 개수이다. DFS와 BFS 모두 모든 노드를 방문하기 때문에 그래프의 크기에 따라 탐색 시간이 결정된다. 동작방식 & 구현 DFS시작 노드에서 한 방향으로 갈 수 있는 만큼 탐색한다.더 이상 이동할 곳이 없으면 이전 노드로 돌아가 다른 경로를 탐색한다.모든 노드를 방문할..

Computer Science/Algorithm

[Python] 투 포인터(Two Pointer)

핵심 개념투 포인터(Two Pointer)는 배열이나 리스트에서 두 개의 포인터를 활용해 문제를 해결하는 기법이다. 주로 정렬된 배열에서 특정 조건을 만족하는 부분을 찾거나, 두 개의 배열을 병합할 때 사용된다. 탐색 범위를 줄여 효율적으로 동작하기 때문에 많은 알고리즘 문제에서 활용된다.  시간 복잡도Two Pointer 기법의 시간 복잡도는 일반적으로 \( O(N) \)이다. 각 포인터가 배열을 한 번씩만 훑고 지나가기 때문에 불필요한 중복 연산이 줄어든다. 반면, Brute Force 접근법은 \( O(N^2) \)인 경우가 많아 투 포인터를 사용하면 성능을 크게 향상시킬 수 있다. 동작방식 & 구현 투 포인터는 보통 다음과 같은 방식으로 동작한다.시작점과 끝점을 설정: 두 개의 포인터를 배열의 시..

Computer Science/Software Engineering

Status vs State

소프트웨어 개발에서 status와 state는 비슷해 보이지만 사용하는 맥락과 의미가 다르다. Status“What is the current status of this project?” The answer should be “In testing.” Status는 시스템, 프로세스 또는 객체의 외부적이고 정적인 속성을 나타내며, 현재의 상태를 설명하거나 나타낸다. 대표적으로 http 요청을 주고받을 때 response에 status가 포함된다. 여기서 200, 404 등의 status 코드가 함께 반환되고 이러한 상태는 이미 결정된 것이므로 현재의 결과에선 절대 변하지 않는 정적 속성을 지닌다. 특징을 정리해 보면 아래와 같다.외부 정적 상태특정 시점의 상태를 설명시스템의 현재 상태 보고예시: 서버 상태..

Computer Science/Computer Network

[네트워크 실습] 네트워크 구성 - BGP(Border Gateway Protocol)

1. 주요 개념 BGP(Border Gateway Protocol) AS(Autonomous) BGP(Border Gateway Protocol)는 OSPF의 Area라는 개념과 비슷한 AS(Autonomous)라는 개념을 사용해서 통신한다. 서로 다른 AS 간의 BGP Session을 External BGP, 동일 AS내의 BGP Router 간의 BGP Session을 Internal BGP라고 한다. 아래는 미리 구상된 토폴로지의 구조이다. 위 토폴로지를 토대로 네트워크를 구축한다. 2. 구축 BGP의 명령은 아래와 같다. set protocols bgp [as number] neighbor [neighbor network address] remote-as '[neighbor as number]' ..

Computer Science/Software Engineering

[Server] SSO(Single Sign-On)와 소셜 로그인(Social Login)

SSO(Single Sign-On) SSO(Single Sign-On)는 한 번의 사용자 인증으로 다수의 애플리케이션 및 웹사이트에 대한 사용자 로그인을 허용하는 통합 인증 솔루션이다. 최근 간편 로그인 또는 소셜 로그인(Social Login)이라는 이름으로 많은 어플리케이션과 웹 사이트에서 접할 수 있다. SSO의 가장 큰 장점은 하나의 플랫폼에서 인증이 끝나면 그 이후 로그인과 로그아웃을 반복할 필요가 없다는 간편함이다. 이러한 간편함은 사용자 경험을 개선하는 중요한 방법 중 하나가 된다. 뿐만 아니라 서비스를 제공자도 기술적, 관리적 측면에서 아래와 같은 이점이 있다. 암호 보안 강화: 하나의 강력한 비밀번호를 만들도록 권장하여 사용자의 오입력 방지와 함께 기존의 보안 관행에서 어느정도 벗어날 수..

loading