C++

· Etc.
포인터포인터는 다른 변수나 메모리의 주소를 저장하는 변수이다.코드를 작성하면서 포인터의 개념이 부족하다고 느껴 포인터에 대해 공부하고 기록하려고 한다.   I. 포인터 선언 및 초기화포인터는 특정 데이터 형식의 변수를 가리키는 변수이다. 포인터를 선언할 때는 데이터 형식 뒤에 '*' 를 붙인다.int* ptr; // int 형 변수를 가리키는 포인터char* cptr; // char 형 변수를 가리키는 포인터 또한 포인터는 다른 변수의 주소를 저장한다.주소를 할당하려면 주소 연산자 '&' 를 사용한다.int a = 10;int* ptr = &a; // 'a' 변수의 주소를 ptr에 저장 II. 포인터의 역참조포인터를 통해 실제 변수에 접근할 수 있다.이를 역참조라고 하며 '*' 연산자를 사용한다.in..
· Etc.
댕글링 포인터프로그램이 더 이상 유효하지 않은 메모리 주소를 참조하는 포인터를 의미한다. 이는 메모리 안전성과 프로그램의 안전성을 저하시킬 수 있는 중요한 문제이다. 댕글링 포인터가 발생하는 주요 원인과 그 결과, 그리고 이를 방지하는 방법에 대해 알아보자 댕글링 포인터가 발생하는 주요 원인I. 객체 해제 후 포인터 사용:메모리 해제(삭제) 후에도 여전히 포인터가 해당 메모리를 가리키고 있는 경우, 해당 포인터는 더 이상 유효한 메모리를 참조하지 않게 된다.  이때 그 포인터를 댕글링 포인터라고 한다.int* ptr = new int(10);delete ptr; // 메모리 해제*ptr = 20; // 댕글링 포인터 사용, 정의되지 않은 동작(UB) II. 스택 메모리 참조:함수가 반환된 후 스택에..
· Algorithm
https://www.acmicpc.net/problem/16928뱀과 사다리 게임을 플레이할 때, 1번 칸에서 100번 칸까지 도착하기 위해 주사위를 최소로 굴린 횟수를 구하는 문제이다.이때 여기서 주어진 입력은 사다리와 뱀의 정보가 주어진다.  최단 경로를 찾아야 하며, 그러기 위해서는 모든 칸을 탐색해야 하고, 방문한 칸을 체크하여 중복으로 방문하는 것을 막아야하니 BFS로 계산하는게 효율적이겠다고 판단하여 BFS로 구현하였다.  코드#include #include #include #include // INT_MAX 사용을 위해 추가using namespace std;vector> ladder;vector> snake;vector moves(101, INT_MAX); // 칸 별 이동 횟수를 저장..
· Algorithm
https://www.acmicpc.net/problem/1012 이 문제는 연결된 영역을 찾는 문제로 볼 수 있다. 배추들이 인접해있는 영역을 찾고 각 영역에 대해 최소한의 배추흰지렁이의 수를 계산하면 된다. 코드 #include #include using namespace std; void dfs(vector& field, int x, int y, int m, int n) { //값이 음수이거나, 행렬을 벗어나거나, 이미 방문한 노드, 즉 배추가 없다면 탐색하지 않는다. if (x = m || y = n || field[x][y] == 0) { return; } field[x][y] = 0; // 이미 방문한 배추는 0으로 표시 // 상하좌우로 이동하며 배추가 있는..
· Algorithm
https://www.acmicpc.net/problem/1931 이 문제는 회의실을 최대한 활용하여 겹치지 않는 회의를 많이 배정하는 것을 목표로 한다. 이런 유형의 문제는 그리디 알고리즘을 활용하여 효율적으로 해결이 가능하다. 코드 #include #include #include using namespace std; int main() { int n; cin >> n; vector list; for (int i = 0; i > start >> end; list.push_back(make_pair(end, start)); } sort(list.begin(), list.end()); int time = list[0].first; int count..
· Algorithm
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++ 클래스와 블루프린..
· 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..
alsrudwls01
'C++' 태그의 글 목록