문제 풀이/Programmers 문제 풀이

#1. 문제 #2. 풀이 1. 동적 계획법 [알고리즘]#5_동적 계획법 [알고리즘]#5_동적 계획법 동적 계획 알고리즘에 대해 알아보겠습니다. Overview 개념 예제 #0. 개념 1. 동적 계획법(Dynamic Programming) 동적 계획법은 최적화 문제를 해결하는 데 사용되는 알고리즘 디 webddevys.tistory.com Details '동적 계획법'은 최적화 알고리즘 디자인 기법 중 하나입니다. 동적 계획법은 입력 크기에 따라서 중복되는 하위 문제를 재귀적으로 해결하고, 이 결과 값을 저장하고 기억하는 것으로 중복 계산을 방지해 최적를 수행하여 효율적으로 최적해를 찾아냅니다. 2. DFS 활용(x) -> DP 활용(o) 해당 문제의 최적해를 찾기 위해 DFS를 활용할 경우, 시간 초과 ..
#1. 문제 #2. 풀이 1. map 컨테이너 [Basic C++] #38_map, 연관 컨테이너 #1. 개념 1. map [정의] : C++의 STL에서 제공하는 map 컨테이너는 지정된 형식의 키와 데이터 값을 한 쌍으로 레드-블랙 트리 자료구조에 저장하는 연관 컨테이너입니다. [특징] : map 컨테이너는 오직 webddevys.tistory.com Details map 컨테이너는 C++ STL에서 제공하는 연관 컨테이너로, 키와 값을 한 쌍으로 레드-블랙 트리 자료구조에 저장합니다. 2. 우선순위 큐 [자료구조]#7_우선순위 큐 [자료구조]#7_우선순위 큐 우선순위 큐 자료구조에 대해 알아보겠습니다. Overview 개념 구현 참고 #0. 개념 1. 우선순위 큐 정의 : 우선순위 큐(Priorit..
#1. 문제 #2. 풀이 1. 유클리드 호제법 [BOJ알고리즘, C++]#2609_최대 공약수와 최소 공배수, 유클리드 호제법 [BOJ 알고리즘, C++] #2609_최대 공약수와 최소 공배수, 유클리드 호제법 BOJ 알고리즘 문제 풀이, 2609_최대 공약수와 최소 공배수 유클리드 호제법 알고리즘을 통해 두 자연수의 최대 공약수와 최소 webddevys.tistory.com Details '유클리드 호제법'은 두 수 a와 b의 최대 공약수를 구하는 알고리즘입니다. 이 알고리즘은 두 정수 a와 b의 최대 공약수가 a와 b를 나눈 나머지 값을 이용하여 계속 나누는 과정을 반복하다가, 나머지가 0이 되어 나누어 떨어지는 수가 생기면 그 수가 두 수의 최대 공약수가 되는 점을 활용합니다. 2. 최대 공약수, ..
#1. 문제 #2. 풀이 1. 이분 탐색 [알고리즘]#1_이분 탐색(Binary Search) [알고리즘]#1_이분 탐색(Binary Search) 이분 탐색/이진 탐색 알고리즘에 대해 알아보겠습니다. #0. 개념 1. 이분 탐색? [정의] : 이분 탐색(Binary Search)은 정렬된 배열에서 특정한 값을 찾는 데에 사용되 webddevys.tistory.com [정의] : 이분 탐색은 정렬된 데이터 목록에서 특정 값을 찾는 데 사용되는 탐색 알고리즘입니다. [특징] : 데이터 목록이 정렬된 상태일 때, 활용 가능한 알고리즘입니다. [동작 방식] 배열의 시작 지점을 가리키는 포인터, 배열의 마지막 지점을 가리키는 포인터, 두 개의 포인터 초기화 두 개의 포인터가 지정하는 부분 배열의 중간 위치를 구..
#1. 문제 #2. 풀이 1. DFS [자료구조]#6_그래프 #0. 개념 1. 그래프? [정의] : 그래프는 노드와 간선들의 집합으로 이루어진 비 선형 자료구조입니다. 그래프의 노드들은 간선을 통해 연결되어 일종의 네트워크를 형성합니다. 그래프는 노드와 webddevys.tistory.com [정의] : DFS(깊이 우선 탐색)은 그래프 내 모든 정점을 탐색하는 방법 중 하나입니다. [특징] : DFS는 현재 정점을 기준으로 깊은 탐색을 우선적으로 진행하고, 다음 인접 정점에 대한 깊이 탐색을 진행. [구현] 재귀 호출 스택 2. 두 개의 DFS - 양수에 대한 재귀 DFS, 음수에 대한 재귀 DFS numbers 목록의 첫 번째 정점을 시작으로 양수 값에 대한 DFS와 음수 값에 대한 DFS를 호출합니..
#1. 문제 #2. 풀이 1. a와 b를 1을 더해주고 2로 계속 나눠준다. (a+1)/2와 (b+1)/2 하며 a와 b가 서로 같을 때까지 그 횟수를 카운트합니다. a와 b는 매번 이기며 토너먼트를 올라가며, 새로운 라운드에 가서 (a+1)/2 혹은 (b+1)/2 번호를 부여받기 때문입니다. #3. 코드 #include #include using namespace std; int solution(int n, int a, int b) { int answer = 0; // #1. a와 b의 참가자 번호가 같을 때 까지 2를 나누어준다. while(a != b) { // a가 첫 번째 부여받은 번호가 4라면, 다음 라운드에서 2를 부여받는다. a = (a+1)/2; // b가 첫 번째 부여받은 번호가 7라면..
#1. 문제 #2. 풀이 1. 투 포인터 알고리즘 [알고리즘]#7_투 포인터 #1. 개념 1. 투 포인터 [정의] : '투 포인터' 알고리즘은 배열 또는 리스트에서 두 개의 포인터를 활용해 원하는 조건을 만족하는 부분을 찾는 알고리즘입니다. [특징] : '투 포인터' 알고리즘은 일 webddevys.tistory.com [정의] : '투 포인터' 알고리즘은 두 개의 포인터를 활용해 원하는 조건을 만족하는 부분을 찾는 알고리즘입니다. [특징] : '투 포인터' 알고리즘은 일반적으로 정렬된 배열 혹은 리스트에서 활용합니다. [동작 방식] 배열의 시작 지점을 가리키는 포인터, 그리고 끝 지점을 가리키는 포인터, 두 개의 포인터를 초기화합니다. 두 포인터가 움직이며 주어진 조건을 만족하는지 검사합니다. 조건을 ..
[Programmers 알고리즘, C++]#Level2_가장 큰 수 Programmers 알고리즘 문제 풀이, Level2_가장 큰 수 C++의 algorithm 라이브러리에서 제공하는 sort 함수와 람다 표현식을 활용하는 문제 Overview 문제 풀이 코드 #1, 문제 #2. 풀이 1. sort() [Basic C++] #32-3_STL 정렬 알고리즘 [Basic C++] #32-3_STL 정렬 알고리즘 C++ 개발에서 표준 라이브러리(STL)에 대해 알아보겠습니다. "전문가를 위한 C"의 15 항목, "C++ 표준 라이브러리 살펴보기"에 해당하는 내용입니다. Overview 개념 partiti webddevys.tistory.com [정의] : C++의 algorithm 헤더에서 제공하는 sort..
[Programmers 알고리즘, C++]#Level 1_배열의 원소 삭제하기 Programmers 알고리즘 문제 풀이, Level1_배열의 원소 삭제하기 C++의 remove_if(), find(), 그리고 erase()를 활용하는 문제 Overview 문제 풀이 코드 #1. 문제 #2. 풀이 1. remove() + erase() [Basic C++] #53_STL 알고리즘, remove + erase, 옮기고 삭제하기 [Basic C++] #53_STL 알고리즘, remove + erase, 옮기고 삭제하기 STL 알고리즘 중 "remove 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. r webddevys.tistory...
[Programmers 알고리즘, C++]#Level 1_체육복 Programmers 알고리즘 문제 풀이, Level1_체육복 C++의 STL에서 제공하는 map 컨테이너를 활용하는 문제 Overview 문제 풀이 코드 #1. 문제 #2. 풀이 1. map [Basic C++] #38_map, 연관 컨테이너 [Basic C++] #38_map, 연관 컨테이너 C++ 개발에서 표준 라이브러리(STL)의 "map"에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. Overview 개념 webddevys.tistory.com [정의] : C++의 STL에서 제공하는 map 컨테이너는, 지정된 형식의 키와 데이터 값을 한 쌍으로 저장하는 연관 컨테이..
Hardii2
'문제 풀이/Programmers 문제 풀이' 카테고리의 글 목록 (3 Page)