본문 바로가기

CS12

[알고리즘] 이분탐색 헷갈리지 않기 저는 이분탐색 문제를 풀 때마다 헷갈립니다. . 탈출 조건 중 어느 걸 선택해야 할지, while 문도 범위를 매번 정확히 하지 않은채 문제를 풀곤 했는데요. 오늘 헷갈리지 않게 구현하는 방법을 정리하려고 합니다 ! 이분탐색 결정 문제의 답이 이분적일 때 사용할 수 있는 탐색 기법입니다. 이 때, 결정 문제란 답이 Yes or No인 문제를 말합니다. 예를 들어, 1 ~ 50까지의 오름차순 정렬된 카드 더미(v[])에서 val번 카드를 찾는 문제를 예시로 들게요. 이 경우, 결정 문제를 "v[i] >= val인가 ?"로 잡으면 결정 문제는 i가 증가함에 따라 F, F, ... F, T, T, ... 와 같이 분포하게 됩니다. 이 때, 찾고자 하는 값은 처음으로 v[i] >= val인 지점, 즉 처음 결정.. 2022. 11. 25.
[알고리즘] 다익스트라 + 플로이드 워샬 구현 (Swift) 합승 택시 요금 문제를 풀다가 다익스트라랑 플로이드 워샬에 대해 정리하고 가려고 합니다 . . 문제는 가중치 있는 그래프가 주어지고, 시작점[s]으로부터 특정 한 지점[i]을 거쳐 결국 다른 두 개의 도착지[a, b]에 도착하는 최단거리를 구하면 되는 문제입니다. 다익스트라 가장 먼저 다익스트라 풀이를 생각했습니다. 다익스트라는 최단거리를 갱신해나가는 알고리즘으로 일종의 dp 방식입니다. 코드로 구현하는 게 오늘 포스팅의 목적이기 때문에 알고리즘은 간단하게 설명할게요 . . ! 1. 최단 거리 저장하는 배열 dist[]를 INF로 초기화 2. 시작점부터 인접한 노드들 돌면서 최단 거리 갱신 - priorityQueue 사용하여 cost 가장 낮은 노드순으로 pop하기 - dist[다음노드] > 현재 거리.. 2022. 11. 24.
[네트워크] HTTP vs. HTTPS 인터넷을 접속해본 사람이라면 HTTP와 HTTPS는 당연히 접해본 적이 있을 겁니다. 지금 이 웹사이트의 주소 또한 https로 시작하는 것을 볼 수 있는데요 ㅎ ㅎ 그렇다면, 이것들이 무슨 뜻을 가지고 있는지 차이점은 무엇인지 알아봅시다 ! HTTP란 ? HTTP란 Hyper Text Transfer Protocol의 약자로 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약입니다. 이게 무슨 뜻인데 ..? 즉, HTTP는 서버와 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜으로 80번 포트를 사용하고 있습니다. HTTP 서버가 80번 포트에서 요청을 기다리고 있으며 클라이언트는 80번 포트로 요청을 보내게 됩니다. 가장 기초적인 프로토콜으로 인터넷의 초기에 모든 웹사이트에서 기본적으로 사용되.. 2022. 10. 18.
[운영체제] 동기 vs. 비동기 (blocking vs. non-blocking) 공부할 때도 .. 개발할 때도 .. 매일 듣던 말이 동기 / 비동기 였는데요 오늘 요 아이를 한 번 알아보고자 합니다 . . . + 스리슬쩍 blocking vs. non-blocking 개념까지 알아볼게요 . .! 동기 (Synchronous) 동기란 말 그대로 동시에 일어난다는 뜻으로 요청과 그 결과가 동시에 일어나게 됩니다. 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 합니다. Thread1 이 작업을 시작시키고 Task1 이 끝날 때까지 기다렸다 Task2를 시작합니다. 작업 요청을 했을 때 요청의 결과값을 직접 받습니다. 이 때, 요청의 결과값은 return값과 동일합니다. (비동기 예시를 보면 이해할 수 있습니다 ~) 호출한 함수가 작업 완료를 신경 씁니다. 비동기 (A.. 2022. 10. 14.
[운영체제] 프로세스 vs. 스레드 OS의 가장 기본적인 개념 중 하나인 프로세스와 스레드를 알아보려고 합니다. . ! 프로그램(Program)이란 ? 어떤 작업을 위해 실행할 수 있는 파일입니다. 프로세스(Process)란 ? 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램입니다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 (독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 동적인 개념으로는 실행된 프로그램 의미 여기서 할당받는 시스템 자원에는 ? - CPU 시간 - 운영되기 위해 필요한 주소 공간 - Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap 구조)을 할당 받습니다. 기본적으로 프로세스당 최소.. 2022. 10. 13.