https://www.acmicpc.net/problem/1181 정수 N이 주어지고 N개의 줄에 걸처 소문자로 이루어진 알파벳을 단어를 한줄에 하나씩 입력한다. 이때 조건은 다음과 같다. 1. 길이가 짧은 순서대로 2. 길이가 같으면 사전 순으로 (a>b>c) 3. 중복된 단어는 하나만 남기고 삭제 코드 #include #include #include #include #include using namespace std; //N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬 //1. 길이가 짧은 것 부터 //2. 길이가 같으면 사전 순으로, a,b,c //중복된 단어는 하나만 남기고 제거 bool compare(paira, pairb) { if (a.first == b.first) { return a..
개요 언리얼 엔진에서의 프로그래밍은 게임의 기능을 만드는 것을 의미한다. 캐릭터가 어떻게 조작되어 움직이고, 어떤 규칙으로 목적을 달성해야 게임에서 승리하게 되는지 등 이런 전반적인 것을 프로그래밍 언어나 다른 여러 가지 방법으로 만드는 것이다. 언리얼 엔진에서 게임 기능을 만드는 방법은 C++와 블루프린트 이렇게 두 가지가 있다. C++ 클래스로만 게임을 제작하거나 블루프린트 클래스만을 이용해서 게임을 제작하는 것도 충분히 가능하지만, 이 두 방법을 완전히 따로 사용하는 것 보다는 프로그래머가 C++로 베이스가 되는 게임 기능을 만들고, 디자이너가 블루프린트를 이용해서 그 기본 게임 기능을 가지고 게임의 재미를 위한 기능들을 제작하는 방식으로 함께 사용할 때 시너지를 발휘한다. C++ 클래스와 블루프린..
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 <..
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 ->..
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..
Map이란? 키-값(key-value) 쌍을 저장하는 연관 컨테이너로, 키를 사용하여 값을 빠르게 검색할 수 있는 자료구이다. 'std::map'은 레드-블랙 트리(Red-Black Tree)라는 자기 균형 이진 검색 트리를 기반을 작동한다. 이 트리는 삽입, 삭제, 검색 등의 연산을 효율적으로 수행할 수 있도록 설게되어 있다. 아래에서 'std::map'의 동작원리와 사용방법을 상세히 설명하겠다. 동작원리 - 레드-블랙 트리: 'std::map' 은 레드-블랙 트리로 구현되어 있으며, 레드-블랙 트이는 이진 검색 트리의 3한 종류로, 균형을 유지하는 트리이다. 이것은 모든 노드가 레드 또는 블랙이며, 몇가지 규칙에 따라 노드가 추가되거나 제거될 때 균형을 유지한다. - 키-값 쌍: 'std::map'은..
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_..
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) { ..
문제를 자주 풀다보면 시간이 초과되어 오답으로 처리되는 경우가 있었다. 다른 언어는 잘 모르지만 C++언어에서 입출력을 향상시키는 방법을 몇가지 적어보려고 한다. ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); 의미와 장단점 ios_base::sync_with_stdio 구문은 c의 stdio와 c++의 iostream을 동기화시켜주는 역할을 하는데 이 때 iostream과 stdio의 버퍼를 모두 사용하기에 딜레이가 발생한다. 따라서 ios_base::sync_with_stdio(0)를 작성해 동기화를 비활성화 시켜줄 수 있다. 이로 인해 c++만의 독립적인 버퍼 생성, c의 버퍼와 병행할 수는 없지..
https://www.acmicpc.net/problem/1929 소수를 출력하는 문제이지만 다음 문제와 같이 사용자가 직접 범위를 지정하는 경우에는 무조건 2부터 시작하지는 않기에 일반적인 소수 출력으로는 문제를 풀기 쉽지 않다. 범위 내 소수를 구하는 방법 중 하나인 에라토스테네스의 체를 이용해 문제를 풀었다. 코드 #include #include using namespace std; void Eratos(int n, int m) { if (n