본문 바로가기

c++59

[Modern C++] String ■ 기록 이외에도 많은 함수가 존재. 사용하려고 할 때마다 문서 찾아봐야함 2024. 3. 29.
[자료구조] 우선 순위 큐 (Priority Queue) ■ 이론 우선 순위 큐는 힙 트리(Heap Tree)의 구조를 갖는다. 최적 조건에 해당하는 값을 한 번에 구하고 싶을 때 유용한 자료구조이다. 연결리스트나 벡터 같은 경우 최대값 최소값을 찾으려면 O(n)만큼 선회하며 모든 값을 비교해줘야 도출할 수 있다. 하지만 우선순위큐는 힙트리의 구조로인하여 완전이진트리의 형태를 띄고 있다. 데이터를 삭제 및 추가하는 과정에서 대소관계를 비교하며 노드를 이동시키는 연산이 트리의 높이(logN)만큼 발생하므로 O(logN) 정도의 시간복잡도로 수행된다. [힙트리 설명 및 힙 정렬 알고리즘은 아래 포스팅에서 이전에 C#으로 구현해봤었다.] https://yjhdevelopdiary.tistory.com/172 [Alogrithm] 히프, 기수, 계수 정렬, 알고리즘 .. 2024. 3. 25.
[C++] 동적 미로 생성, 우수법 탈출 AI ■ 구조 [main] (1) 맵 생성판을 초기화 시켜준다. - Board (맵 판떼기)의 초기화 함수는 맵 동적 생성 함수를 실행시켜준다. 그 외 부수적인 함수로 인자로 받은 Pos이 지나갈 수 있는 위치인지 판별하는 함수와 색깔을 칠해주는 함수가 존재한다. (2) 플레이어 클래스를 초기화 시켜준다. 밑의 내용은 이동할 때 지나가야하는 타일들의 위치 정보를 벡터 컨테이너 담아주는 함수이다. (3) 유니티의 deltaTime처럼 이전 프레임과 현재 프레임의 차이를 인자로 player의 업데이트 함수를 실행시켜준다. - 플레이어의 Update함수는 초기화 시점에 캐싱해놨던 Pos 값들에 따라 차례대로 이동하는 함수이다. 아래 MOVE_TICK 변수의 값을 설정함으로써 이동 딜레이 시간을 조절해줄 수 있다. .. 2024. 3. 24.
[C++, 백준] 알파벳 찾기 [2022. 10. 10] 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. ================================== 두 가지의 방법으로 풀어.. 2022. 10. 10.
[C++, 백준] 숫자의 합 [2022. 10. 10] 문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력 입력으로 주어진 숫자 N개의 합을 출력한다. ================================================================ 두 가지의 방법으로 풀어봤다. 1. Char 포인터 사용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; int main(void) { ios_base::sync_with_stdio(false.. 2022. 10. 10.
[C++, 백준] 아스키 코드 [2022. 10. 10] 문제 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. 입력 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다. 출력 입력으로 주어진 글자의 아스키 코드 값을 출력한다. ==================================================== 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include using namespace std; int main(void) { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); char Character_for_Transfering_To_AS.. 2022. 10. 10.
[C++, 백준] 한수 [2022. 10. 10] 문제 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. ========================================================= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3.. 2022. 10. 10.
[C++, 백준] 셀프 넘버 [2022. 10. 10] ====================================== 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 8.. 2022. 10. 10.
[Pattern] Managed code, UnManaged code, Dispose 패턴 [2022. 03. 07. Mon] ※ 개인 학습 기록용입니다. 개념이나 예시가 잘못 되었을 수도 있음을 주의드립니다. 만약에 그러한 점이 발견되었다면 조언 및 첨삭 감사히 부탁드리겠습니다 :) ■ 개념 여러가지 뜻이 존재하지만 위 패턴에서 사용되어지는 개념은 Dispose : 처분하다, 처리하다. 이다. able이 붙은 Disposable은 처분 가능하다는 뜻인데 무엇을 처분하는 것인지를 먼저 이해를 해야 사용할 수 있다. https://docs.microsoft.com/ko-kr/dotnet/api/system.idisposable?view=net-6.0 (참고 자료) 바로 메모리를 관리하는 패턴인데. 처음에 해당 자료를 봤을 때는 'C#에는 .NET Framework안에서 자동으로 리소스를 관리해주.. 2022. 3. 7.