[Algorithm] 이분 탐색 - 심화
2025. 1. 21. 16:01
CS/Algorithm
이분 탐색을 활용한 Parametric Search 문제에서 정말 다양한 코드들이 존재한다. 우선 종료 조건에 따라, st 과 st 으로 분리된다. 또한, 구간 업데이트 시, st = mid + 1, st = mid 혹은 en = mid - 1, en = mid 과 같은 다양한 코드들을 마주하게 된다.이들의 조합을 생각해 보면 정말 수많은 조합이 가능해진다. 실제로 PS에서 이런 종료 조건들에 의해 답이 틀리는 경우도 있었으며, 무한 루프에 빠지는 경험을 자주 하곤 했다. 이에 따라 이들의 차이점에 대해 정리하고자 한다.아래의 나오는 코드들은 Swift로 작성되었다. 이분 탐색"이분 탐색"은 정렬되어 있는 원소들에서 탐색 범위를 절반으로 줄여가며 탐색하는 알고리즘이다.func binarySearch..
[Algorithm] 그래프 탐색 알고리즘 - BFS & DFS
2024. 8. 16. 11:31
CS/Algorithm
"그래프 탐색"이란 그래프에서 하나의 노드를 시작으로 다수의 노드를 방문하는 알고리즘을 말한다. 이때, 방문하는 노드는 딱 한 번씩만 방문하는 것이 특징이다.만약, 자료구조 그래프에 대한 내용이 궁금하다면 아래 포스팅을 참고 바란다.https://seokyoungg.tistory.com/94 [Data Structure] Graph"그래프"(Graph)는 각 데이터와 그들을 잇는 선들로 이루어진 ADT이다. 각 데이터들을 "정점"(vertex) 혹은 "노드"(node)라 부르며, 이들을 잇는 선을 "간선"(edge)라 부른다. 즉, 그래프는 유한한 개수의seokyoungg.tistory.com 이러한 그래프 탐색 알고리즘에는 2가지가 있다. BFSDFS BFS"BFS"는 Breadth-first Sea..
[Algorithm] 알고리즘이란?
2024. 7. 8. 13:00
CS/Algorithm
수학 혹은 컴퓨터 과학(Computer Science)에서 "알고리즘"이란 어떠한 문제를 풀기 위한 "유한한 갯수의 일련의 시퀀스"이다. 이때, 알고리즘은 컴퓨터 프로그램으로 대부분 구현되나, 전기 회로 혹은 기계 등등 다른 수단으로도 구현될 수 있다. 특성 앞서 알고리즘을 "유한한 갯수의 일련의 시퀀스"라고 정의했지만, 여기서 몇가지 조건이 더 붙는다. 입력 : 잘 정의된 입력들을 받아들일 수 있어야 한다.출력 : 정확성을 추론할 수 있는 출력이 있어야 한다.명확성 : 각 단계는 명확하게 정의되어야 한다. 각 단계에서 수행할 작업을 정확하게 지정할 수 있어야 한다. 유한성 : 유한한 수의 명령어의 시퀀스가 수행되면 반드시 종료되어야 한다.유효성 : 모든 명령어는 실행 가능해야 한다. 알고리즘 평가 "..