๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

์ด์ค‘ ํฌ์ธํ„ฐ ์‚ฌ์šฉ๋ฒ• & ์˜ˆ์ œ

by 5566 2023. 8. 30.

1. ์ด์ค‘ ํฌ์ธํ„ฐ๋ž€?

์ด์ค‘ ํฌ์ธํ„ฐ๋Š” C๋‚˜ C++์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํฌ์ธํ„ฐ์˜ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ๋Š” ๋‹ค๋ฅธ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๋กœ, ์ด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜๊ณ  ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ๋‹ค๋ฅธ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค.

์ž์„ธํžˆ ๋งํ•˜๋ฉด, ์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋กœ, ํฌ์ธํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ํฌ์ธํ„ฐ์˜ ํฌ์ธํ„ฐ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ์ฃผ๋กœ ํ•จ์ˆ˜ ์ธ์ž๋กœ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ํ•ด์ œ์™€ ๊ด€๋ จ๋œ ์ž‘์—…์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, int ํ˜• ํฌ์ธํ„ฐ์˜ ํฌ์ธํ„ฐ์ธ ์ด์ค‘ ํฌ์ธํ„ฐ๋Š” int** ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์„ ์–ธ๋ฉ๋‹ˆ๋‹ค. ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๊ฐ€ ํฌ์ธํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด, ๋ณด๋‹ค ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š”ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ๋ฉ”๋ชจ๋ฆฌ ๋™์  ํ• ๋‹น ๋ฐ ํ•ด์ œ

์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋™์  ํ• ๋‹น๊ณผ ํ•ด์ œ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋™์  ํ• ๋‹น์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํฌ์ธํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ํšจ์œจ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๋‹ค์ค‘ ์ธ์ž ์ „๋‹ฌ

์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ํ•จ์ˆ˜์— ๋‹ค์ค‘ ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜์— ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ํ•จ์ˆ˜ ๋‚ด์—์„œ ํฌ์ธํ„ฐ๋ฅผ ์—ญ์ฐธ์กฐํ•˜์—ฌ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ•จ์ˆ˜ ์™ธ๋ถ€์—๋„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ์›๋ณธ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๋…ธ๋“œ๋ฅผ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•˜๊ณ  ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ๋„ ์›ํ•˜๋Š” ์œ„์น˜์— ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๋‹ค์ฐจ์› ๋ฐฐ์—ด

์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ๋‹ค์ฐจ์› ๋ฐฐ์—ด์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. C์—์„œ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ ํฌ์ธํ„ฐ๋ฅผ ์ค‘์ฒฉ์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด์ค‘ ํฌ์ธํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ณ  ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ค‘ ํฌ์ธํ„ฐ์˜ ์‚ฌ์šฉ์€ ํ˜ผ๋ž€์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3. ์ด์ค‘ ํฌ์ธํ„ฐ ์‚ฌ์šฉ๋ฒ•

์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋กœ, ๋‹ค๋ฅธ ํฌ์ธํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด์ค‘ ํฌ์ธํ„ฐ ์„ ์–ธ

์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ๋‘๋ฒˆ์งธ ๊ฐœ์˜ * ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ค‘ ํฌ์ธํ„ฐ๋กœ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, int ํƒ€์ž… ์ด์ค‘ ํฌ์ธํ„ฐ๋Š” int** ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

int** double_ptr;

์ด์ค‘ ํฌ์ธํ„ฐ์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด์ค‘ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์—๋Š” ๋‹ค๋ฅธ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋“ค์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฏ€๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

int* ptr1;
int* ptr2;
int** double_ptr;

ptr1 = (int*)malloc(sizeof(int));
ptr2 = (int*)malloc(sizeof(int));

*ptr1 = 10;
*ptr2 = 20;

double_ptr = &ptr1;

์œ„์˜ ์˜ˆ์ œ์—์„œ ์ฒซ ๋ฒˆ์งธ malloc() ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ptr1 ์— int ํ˜• ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ malloc() ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ptr2 ์— int ํ˜• ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ, double_ptr ์— ptr1 ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด์ค‘ ํฌ์ธํ„ฐ ์ด์šฉํ•˜์—ฌ ๊ฐ’ ์ ‘๊ทผ ๋ฐ ๋ณ€๊ฒฝ

์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์— ์ ‘๊ทผํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์—ญ์ฐธ์กฐํ•˜์—ฌ ๊ฐ’์„ ์ฝ์–ด์˜ค๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

int value = **double_ptr; // ptr1 ์„ ์—ญ์ฐธ์กฐํ•˜์—ฌ ๊ฐ’ ์ฝ์–ด์˜ค๊ธฐ
**double_ptr = 30; // ptr1 ์„ ์—ญ์ฐธ์กฐํ•˜์—ฌ ๊ฐ’ ๋ณ€๊ฒฝํ•˜๊ธฐ

์œ„์˜ ์˜ˆ์ œ์—์„œ **double_ptr ์„ ํ†ตํ•ด ptr1 ์˜ ๊ฐ’์„ ์ฝ์–ด์˜ค๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. value ๋ณ€์ˆ˜์—๋Š” ptr1 ์˜ ๊ฐ’์ธ 10์ด ์ €์žฅ๋˜๊ณ , ๊ทธ ๋‹ค์Œ์— ptr1 ์˜ ๊ฐ’์„ 30์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ํฌ์ธํ„ฐ์˜ ํฌ์ธํ„ฐ๋กœ์จ, ๋ณด๋‹ค ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋‚˜ ๋‹ค์ค‘ ์ธ์ž ์ „๋‹ฌ ๋“ฑ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์„ ์ตํžˆ๊ณ  ์ ์ ˆํžˆ ํ™œ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

4. ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ์˜ˆ์ œ

์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์šฉ๋„๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ์˜ˆ์ œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

์˜ˆ์ œ: ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ

๋‹ค์Œ์€ ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋Š” ์˜ˆ์ œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฐ›์•„ ๋ฐฐ์—ด์˜ ์ตœ๋Œ“๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

#include <stdio.h>

int findMax(int** arr, int row, int col) {
    int max = **arr;

    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            if (*(*(arr + i) + j) > max) {
                max = *(*(arr + i) + j);
            }
        }
    }

    return max;
}

int main() {
    int arr[3][4] = {{1, 3, 5, 7}, {2, 4, 6, 8}, {9, 10, 11, 12}};
    int* ptr[3];

    for (int i = 0; i < 3; i++) {
        ptr[i] = arr[i];
    }

    int max = findMax(ptr, 3, 4);
    printf("์ตœ๋Œ“๊ฐ’: %d\n", max);

    return 0;
}

์œ„์˜ ์˜ˆ์ œ ์ฝ”๋“œ์—์„œ๋Š” findMax() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ arr ๋ฐฐ์—ด์—์„œ ์ตœ๋Œ“๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ด์ค‘ ํฌ์ธํ„ฐ arr์„ ํ†ตํ•ด ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•˜๊ณ , row์™€ col์„ ํ†ตํ•ด ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” ์ด์ค‘ ํฌ์ธํ„ฐ arr์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์š”์†Œ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด ์š”์†Œ์˜ ๊ฐ’์„ ์ฝ์–ด์˜ค๊ณ  ๋น„๊ตํ•˜์—ฌ ์ตœ๋Œ“๊ฐ’์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. *(arr + i) + j๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด์˜ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ณ , *(*(arr + i) + j)๋กœ ์—ญ์ฐธ์กฐํ•˜์—ฌ ์š”์†Œ์˜ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ, main() ํ•จ์ˆ˜์—์„œ๋Š” arr ๋ฐฐ์—ด๊ณผ ptr ํฌ์ธํ„ฐ ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ptr[i]์— arr[i]์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜์—ฌ ํฌ์ธํ„ฐ ๋ฐฐ์—ด๊ณผ ๋ฐฐ์—ด์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, findMax() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ตœ๋Œ“๊ฐ’์„ ์ฐพ๊ณ  ๊ทธ ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ์˜ˆ์ œ๋Š” ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์ด ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ์ด์ค‘ ํฌ์ธํ„ฐ์˜ ์žฅ๋‹จ์ 

์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ด์ค‘ ํฌ์ธํ„ฐ์˜ ์žฅ๋‹จ์ ์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

์žฅ์ 

  1. ๋‹ค์ค‘ ์ฐธ์กฐ: ์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ํฌ์ธํ„ฐ์˜ ํฌ์ธํ„ฐ๋กœ์จ, ๋‹ค์ค‘ ์ฐธ์กฐ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•˜๋ฉฐ, ํฌ์ธํ„ฐ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์›ํ•˜๋Š” ์›์†Œ์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ๋™์  ํ• ๋‹น: ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์œ ์—ฐํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ , ํ•„์š”ํ•œ ๋งŒํผ์˜ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ํ•จ์ˆ˜ ์ธ์ž ์ „๋‹ฌ: ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํ•จ์ˆ˜ ๋‚ด์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ ํ˜ธ์ถœ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ณ€๊ฒฝ์„ ์‰ฝ๊ฒŒ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ 

  1. ๋ณต์žก์„ฑ: ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ์˜ ์ฐธ์กฐ์™€ ์—ญ์ฐธ์กฐ๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ฝ”๋“œ๊ฐ€ ๋” ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๊ณ , ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ: ์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ์‹ค์ˆ˜๋กœ ์ž˜๋ชป๋œ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋™์ž‘์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜: ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ๋‹ค๋ฃฐ ๋•Œ, ์ด์ค‘ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜์˜ ์œ„ํ—˜์„ฑ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํ•ด์ œ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ๋Œ€๋กœ ํ•ด์ œํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋‚จ๊ฒจ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ค‘ ํฌ์ธํ„ฐ๋Š” ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์‚ฌ์šฉ ์‹œ ์žฅ์ ๊ณผ ๋‹จ์ ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์‹ ๊ฒฝ์“ฐ๋ฉฐ, ์˜ฌ๋ฐ”๋ฅธ ์ฃผ์†Œ ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๋“ฑ์˜ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€