Algorithm

· Algorithm
https://www.acmicpc.net/problem/9095 정수 n이 주어졌을 때 1, 2, 3의 숫자만을 이용해서 합을 나타내고 그 경우의 수를 구하는 문제이다. 코드 #include #include using namespace std; int main() { int T; int N; cin >> T; vector arr(12); arr[1] = 1; arr[2] = 2; arr[3] = 4; for (int i = 4; i N; cout 1 + 1 2 경우의 수 : 2 1 + 1 + 1 1 + 2 2 + 1 3 경우의 수 : 4 <..
· Algorithm
https://www.acmicpc.net/problem/1463 1. X가 3으로 나누어 떨어지면 3으로 나눈다. 2. X가 2로 나누어 떨어지면 2로 나눈다. 3. 1을 뺀다 이 3개의 연산을 최소한의 횟수로 1을 만드는 문제이다. 코드 #include #include #include using namespace std; int main() { int N; cin >> N; vector dp(N + 1); dp[1] = 0; dp[2] = 1; dp[3] = 1; //dp[4] = dp[3] + 1 = 2 //dp[5] = dp[4] + 1 = 3 //dp[6] = dp[5] + 1 = 4 => 오류 for (int i = 4; i 1 4 -> 2 -> 1 5 -> 4 -> 2 ->..
· Algorithm
https://www.acmicpc.net/problem/10814 사람들의 나이와 이름을 가입한 순서대로 넣고, 회원들을 나이를 기준으로 오름차순으로 정렬하되 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 구현하는 문제이다. 코드 #include #include #include #include #include //pair using namespace std; bool compare(paira, pairb) { if (a.first == b.first) { return false; } else { return a.first > N; vector arr; for (int i = 0..
· Algorithm
Map이란? 키-값(key-value) 쌍을 저장하는 연관 컨테이너로, 키를 사용하여 값을 빠르게 검색할 수 있는 자료구이다. 'std::map'은 레드-블랙 트리(Red-Black Tree)라는 자기 균형 이진 검색 트리를 기반을 작동한다. 이 트리는 삽입, 삭제, 검색 등의 연산을 효율적으로 수행할 수 있도록 설게되어 있다. 아래에서 'std::map'의 동작원리와 사용방법을 상세히 설명하겠다. 동작원리 - 레드-블랙 트리: 'std::map' 은 레드-블랙 트리로 구현되어 있으며, 레드-블랙 트이는 이진 검색 트리의 3한 종류로, 균형을 유지하는 트리이다. 이것은 모든 노드가 레드 또는 블랙이며, 몇가지 규칙에 따라 노드가 추가되거나 제거될 때 균형을 유지한다. - 키-값 쌍: 'std::map'은..
· Algorithm
https://www.acmicpc.net/problem/10866 문제 그대로 각 명령에 따라 덱의 기능을 구현하는 문제이다. 코드 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; int X; string Str; deque dec; cin >> N; if (N 10000) { return 0; } for (int i = 0; i > Str; if (Str == "push_front") { cin >> X; dec.push_front(X); } else if (Str == "push_..
· Algorithm
https://www.acmicpc.net/problem/10773 수를 입력하고 입력한 수를 모두 더하되 0을 입력하면 가장 최근에 쓴 수를 지우는 문제이다. Vector 안에 수를 넣고 0을 입력받았을 때 Vector안에 있는 수를 지우면 되겠다고 생각했다. 코드 #include #include using namespace std; int main() { int N; int input; cin >> N; int result = 0; vector arr; for (int i = 1; i > input; if (input != 0) { arr.push_back(input); } else if (!arr.empty()) { arr.pop_back(); } } for (int element : arr) { ..
· Algorithm
https://www.acmicpc.net/problem/1929 소수를 출력하는 문제이지만 다음 문제와 같이 사용자가 직접 범위를 지정하는 경우에는 무조건 2부터 시작하지는 않기에 일반적인 소수 출력으로는 문제를 풀기 쉽지 않다. 범위 내 소수를 구하는 방법 중 하나인 에라토스테네스의 체를 이용해 문제를 풀었다. 코드 #include #include using namespace std; void Eratos(int n, int m) { if (n
· Algorithm
https://www.acmicpc.net/problem/2164 처음 문제를 보고 큐를 이용해서 풀면 되겠다고 생각했다. 큐 헤더 파일을 이용하면 쉽게 풀 수 있는 문제지만 이를 사용하지 않고 문제를 풀어보고 싶었다. 코드 #include #define MAX 500000 using namespace std; int main() { int N,last; int first = 0; int arr[MAX]{}; cin >> N; for (int i = 0; i < N; i++) { arr[i] = i+1; } last = N - 1; while(1) { first += 1; if (first == last) { break; } last += 1; arr[last] = arr[first]; first += ..
alsrudwls01
'Algorithm' 카테고리의 글 목록 (2 Page)