๐Ÿ“ Coding Test Study/C++

[C++] 1์ฐจ์›, 2์ฐจ์› ๋ฐฐ์—ด ๋™์ ํ• ๋‹น ๋ฐ ํ•ด์ œ

ibelieveinme 2022. 3. 6. 16:28
728x90

์ฝ”๋”ฉ์„ ํ•  ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋™์ ํ• ๋‹น์„ ์‚ฌ์šฉํ•˜๊ณค ํ•ฉ๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์ง€์š”.

 

์ฐธ๊ณ ๋กœ ์ •์ ๋ณ€์ˆ˜๋“ค์€ stack ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋˜๊ณ  ๋™์ ๋ณ€์ˆ˜๋“ค์€ heap ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

stack์˜์—ญ์€ ์ปดํŒŒ์ผ ๋™์•ˆ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฒฐ์ •๋˜๊ณ  CPU์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜์–ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋˜๋ฉด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์„ ์ž…์„ ์ถœ๊ตฌ์กฐ๋กœ.

heap์˜์—ญ์€ ๋Ÿฐํƒ€์ž„ ๋™์•ˆ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฒฐ์ •๋˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์š”๊ตฌํ•œ ๋งŒํผ OS๊ฐ€ ๋นˆ๊ณต๊ฐ„์„ ์ฐพ์•„์„œ ํ• ๋‹นํ•ด์ค๋‹ˆ๋‹ค. ์„ ์ž…์„ ์ถœ ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๊ณ  ์œ ๋™์ ์œผ๋กœ ํ• ๋‹น/ํ•ด์ œ๋˜๋ฏ€๋กœ ๊ผญ ํ•ด์ œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. (๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์กฐ๊ฐ์กฐ๊ฐ ๋ฐฐ๋ถ„๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ)

 

 

1. 1์ฐจ์› ๋ฐฐ์—ด ๋™์ ํ• ๋‹น

int* arr = new int[5]; //ํฌ๊ธฐ๊ฐ€ 5์ธ ์ผ์ฐจ์› ๋ฐฐ์—ด ๋™์ ํ• ๋‹น

1์ฐจ์› ๋ฐฐ์—ด์˜ ๋™์ ํ• ๋‹น์ธ ๊ฒฝ์šฐ, 1์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ new ํ‚ค์›Œ๋“œ๋กœ ํฌ๊ธฐ๋ฅผ ํ• ๋‹นํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

2. 2์ฐจ์› ๋ฐฐ์—ด ๋™์ ํ• ๋‹น

2์ฐจ์› ๋ฐฐ์—ด์„ ๋™์ ํ• ๋‹นํ•  ๋•Œ๋Š” 2์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ํ–‰์„ 1์ฐจ์› ๋ฐฐ์—ด์— ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์™ผ์ชฝ์˜ 1์ฐจ์› ๋ฐฐ์—ด์ธ arr[0]์„ ์˜ค๋ฅธ์ชฝ์— ํฌ๊ธฐ๊ฐ€ 4์ธ 1์ฐจ์› ๋ฐฐ์—ด์— ์—ฐ๊ฒฐํ•ด์คŒ์œผ๋กœ์จ 3x4 ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  

๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

#include <iostream>
using namespace std;

int main() {
	int **arr = new int*[3];//1. ํ–‰ ํฌ๊ธฐ๋ฅผ 3์œผ๋กœ ๋™์ ํ• ๋‹นํ•ด์คŒ

	for (int i = 0; i < 3; i++) {//2. ๊ฐ ํ–‰์— ๊ธธ์ด๊ฐ€ 4์ธ ๋ฐฐ์—ด์„ ํ• ๋‹นํ•ด์คŒ
		arr[i] = new int[4];
	}
	for (int i = 0; i < 3; i++) { //3. ๋™์ ํ• ๋‹นํ•œ ํฌ๊ธฐ ๋งŒํผ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๊ฒŒ ํ•จ
		for (int j = 0; j < 4; j++) {
			cin >> arr[i][j];
		}
	}
	for (int i = 0; i < 3; i++) {//4. ๋™์ ํ• ๋‹นํ•œ 2์ฐจ์› ๋ฐฐ์—ด ํ•ด์ œ
		delete[] arr[i]; //๊ฐ€๋กœ ํ•ด์ œ
	}
	delete[] map;//์ „์ฒด ํ•ด์ œ

	return 0;
}

1. ํ–‰ ํฌ๊ธฐ๋ฅผ 3์œผ๋กœ ๋™์ ํ• ๋‹นํ•ด์คŒ

2. ๊ฐ ํ–‰์— ๊ธธ์ด๊ฐ€ 4์ธ ๋ฐฐ์—ด์„ ํ• ๋‹นํ•ด์คŒ

3. ๋™์ ํ• ๋‹นํ•œ ํฌ๊ธฐ ๋งŒํผ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๊ฒŒ ํ•จ

4. ๋™์ ํ• ๋‹นํ•œ 2์ฐจ์› ๋ฐฐ์—ด ํ•ด์ œ

 

 

3. 2์ฐจ์› ๋ฐฐ์—ด ๋™์ ํ• ๋‹น ํ•ด์ œ

๋™์ ํ• ๋‹น์œผ๋กœ ๋งŒ๋“  ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์‚ฌ์šฉ์ด ๋๋‚  ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ž๋ฐ”์˜ ๊ฒฝ์šฐ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(garbage collector)๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•Œ์•„์„œ ํ•ด์ œํ•ด์ฃผ์ง€๋งŒ C์™€ C++์—๋Š” ์—†์Œ...ใ… )

์œ„ ์ฝ”๋“œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“œ์‹œ, ๊ฐ ํ–‰์„ ๋Œ๋ฉด์„œ ๋™์ ํ• ๋‹นํ•œ ๋ฐฐ์—ด์„ ํ•ด์ œํ•ด์ฃผ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์ „์ฒด ๊ป๋ฐ๊ธฐ๋ฅผ ํ•ด์ œํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

new ์—ฐ์‚ฐ์ž ํ•œ๋ฒˆ ์‚ฌ์šฉ์‹œ, delete ์—ฐ์‚ฐ์ž ํ•œ๋ฒˆ์„ ์‚ฌ์šฉํ•œ๋‹ค! ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ํŽธํ•ฉ๋‹ˆ๋‹น ใ…Ž_ใ…Ž 

 

 

4. ๋™์ ํ• ๋‹น๋œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•˜๊ธฐ

๋Š” ์•„๋ž˜ ๊ฒŒ์‹œ๊ธ€์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์šฉ

 

[C++] ์ •์ /๋™์  ํ• ๋‹น๋œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ ๊ตฌํ•˜๊ธฐ

์ •์ ํ• ๋‹น์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ณ€์ˆ˜๋Š” DATA์˜์—ญ์— ์ €์žฅ๋˜๋Š”๋ฐ, ๋™์ ํ• ๋‹น์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ณ€์ˆ˜๋Š” HEAP์˜์—ญ์— ์ €์žฅ๋œ๋‹ค. DATA ์˜์—ญ์— ํ• ๋‹น๋œ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋Š” sizeof ์—ฐ์‚ฐ์ž๋กœ ํฌ๊ธฐ๋ฅผ ๋ถˆ๋Ÿฌ ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ,

i-believe-in-me.tistory.com

 

728x90