[C++] 동적 할당 new와 delete 사용, 메모리 누수
·
Lanuage/C++
동적 할당 컴퓨터 프로그래밍에서 실행 시간 동안 사용할 메모리 공간을 할당하는 것 크기가 정확히 얼마나 요구되는지 모르는 경우에 주로 사용한다. C++의 동적 할당 연산자 new 연산자 heap에 메모리를 만들고 그 주소를 리턴한다. 메모리에 공간이 없다면 NULL을 반환한다. delete 연산자 가리키는 주소의 메모리를 해제한다. 메모리 할당 사용법 타입 *변수명 = new 타입;//메모리 할당 delete 변수명;//메모리 할당해제 배열 형태의 메모리 할당 및 해제 타입 *변수명 = new 타입[크기];//배열 형태 메모리 할당 delete[] 변수명;//배열 형태 메모리 할당해제 메모리 누수 (Memory Leak) 필요하지 않은 메모리를 계속 점유하고 있는 현상을 말한다. 자바의 경우는 사용하지 ..
[Visual Studio Code] VS Code C / C++ 컴파일, 실행, 디버깅
·
Lanuage/C++
보다 간단한 방법인 Code Runner 사용에 관한 글도 하단에 링크 달아두었습니다! 1. C / C++ 컴파일 컴파일러의 종류 gcc : C언어를 컴파일 할 수 있는 컴파일러 g++ : C++을 컴파일 할 수 있는 컴파일러 컴파일러 준비 터미널 > 기본 빌드 작업 구성 사용하는 언어에 따라 gcc 또는 g++을 선택합니다. 둘 다 사용하는 폴더의 경우 g++을 사용하면 좋습니다. Ctrl + Shift + B를 누르면 '빌드 작업을 찾을 수 없다'는 메시지와 함께 빌드 작업 구성을 선택할 수 있습니다. 이어서, '템플릿에서 tasks.json 파일 만들기'를 선택합니다. 그리고 'Others 임의의 외부 명령을 실행하는 예'를 선택하면 tasks.json 파일이 만들어집니다. tasks.json 파일..
Debugging(디버깅)이란?
·
Computer Science/Concept
Bug 벌레 프로그램의 오류 / 에러 Debug 벌레를 없애는 것 프로그램의 오류를 없애는 것 Bug의 종류는 크게 3가지 1. Complie Error 프로그램에 문법적 오류가 있어서 정상적으로 컴파일 되지 않는 경우 출력창에 어디서 에러가 발생했는지 알려주기 때문에 해결하기 쉽다. 2. Runtime Error 프로그램이 실행 중 비정상적으로 꺼지는 경우 컴파일 에러처럼 컴파일러가 에러 발생 위치를 알려주지 않기 때문에 어디서 에러가 발생했는지 찾기가 까다롭다. 프로그램을 한 줄씩 실행해보면서 문제가 발생하는 줄을 찾아야 한다. 3. Logic Error 프로그램의 결과가 이상하게 나오는 경우 예를 들어, 구구단 6단을 출력하려고 했는데 5단이 출력되었다.
[BOJ / 백준] 1436번 영화감독 숌 C++ 문제 풀이
·
Baekjoon/단계별로 풀어보기
단계별로 풀어보기 - 브루트 포스 단계 - [5단계] 1436번 문제 문제 링크 : www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 입력 복사 : 2 CODE #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; int result = 665; string temp; cin >> n; for (int..
[BOJ / 백준] 1018번 체스판 다시 칠하기 C++ 문제 풀이
·
Baekjoon/단계별로 풀어보기
단계별로 풀어보기 - 브루트 포스 단계 - [4단계] 1018번 문제 문제 링크 : www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 입력 복사 : > 예제 입력 1 8 8 WBWBWBWB BWBWBWBW WBWBWBWB BWBBBWBW WBWBWBWB BWBWBWBW WBWBWBWB BWBWBWBW > 예제 입력 2 10 13 BBBBBBBBWBWBW BBBBBBBBBWBWB BBBBBBBBWBWBW BBBBBBBBBWBWB BBBBBBBBWBWBW ..
[BOJ / 백준] 7568번 덩치 C++ 문제 풀이
·
Baekjoon/단계별로 풀어보기
단계별로 풀어보기 - 브루트 포스 단계 - [3단계] 7568번 문제 문제 링크 : www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 입력 복사 : 5 55 185 58 183 88 186 60 175 46 155 CODE #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; int arr[5..
[BOJ / 백준] 2231번 분해합 C++ 문제 풀이
·
Baekjoon/단계별로 풀어보기
단계별로 풀어보기 - 브루트 포스 단계 - [2단계] 2231번 문제 문제 링크 : www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 입력 복사 : 216 CODE #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, result = 10000001; int generate;..
[BOJ / 백준] 2798번 블랙잭 C++ 문제 풀이
·
Baekjoon/단계별로 풀어보기
단계별로 풀어보기 - 브루트 포스 단계 - [1단계] 2798번 문제 문제 링크 : www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는다. 합이 M을 넘지 않는 카드 3장을 찾을 수 있 www.acmicpc.net 입력 복사 : > 예제 입력 1 5 21 5 6 7 8 9 >예제 입력 2 10 500 93 181 245 214 315 36 185 138 216 295 CODE #include using namespace std; int main() { ios::sync_with_stdio(false); c..
[Algorithm] 브루트 포스와 BFS, DFS
·
Computer Science/Algorithm
브루트 포스(Brute Force) 란? Brute(무식한) + Force(힘) 브루트 포스는 완전 탐색 알고리즘으로, 가능한 모든 경우의 수를 탐색하고 조건에 충족되는 결과만을 가져온다. 무식하게 모두 탐색하기 때문에 100%의 확률로 정답을 출력합니다. 알고리즘은 기본적으로 해가 존재할 것으로 예상되는 범위를 탐색하기 때문에, 브루트 포스 알고리즘을 설계할 때, '해가 하나 이상 존재한다'는 가정을 세우고 모든 범위를 탐색합니다. 100% 정답률을 가지며 만들기 쉽다는 장점이 있지만, 실행 시간이 오래 걸린다는 단점이 있습니다. 구조에 따른 브루트 포스의 종류 브루트 포스는 모든 자료를 탐색해야하기 때문에 어떤 구조더라도 전체를 탐색할 수 있는 방법을 가진다. 선형 구조를 전체 탐색하는 방법은 순차 ..
프로그래밍 언어에서 Error의 종류. Syntax와 Semantics의 차이
·
Computer Science/Concept
Syntax와 Semantics의 정의 Syntax : 문법(Form), 일정형태의 형식에 맞게 작성된다. - 문장이 언어의 문법(grammer)에 따라 유효한지 혹은 타당한지 확인하는 것과 관련있다. Semantics : 문법에 맞는 형식을 취했을 때 그 문법이 하는 일, 의미 - 문장이 타당한 의미를 지니는지 아닌지를 판별하는 것과 관련있다 ERROR의 종류 소프트웨어의 오류는 크게 Syntax Error(구문 오류), Runtime Error(실행 오류), Semantic/Logical Error(의미적 오류)로 나눌 수 있다. 1. Syntax Error(구문적 오류) 프로그래밍 언어의 문법적인 에러를 말한다. 컴파일 과정에서 나오는 것들이며, 구문 오류, 컴파일 타임 에러라고도 한다. 예를 들어..