๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿคท๐Ÿผ‍โ™€๏ธ Etc.../- C, C++, Python, Android

[C ์–ธ์–ด] 1์ฐจ์› ๋ฐฐ์—ด์˜ ๊ธฐ์ดˆ

by Wonit 2021. 6. 23.

๋ฐฐ์—ด

 

CS ๋ถ„์•ผ์—์„œ ๋ฐฐ์—ด์€ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

 

๋ฐฐ์—ด์€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์—ฐ์†๋˜์–ด์•ผ ํ•œ๋‹ค.

 

๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์—ฐ์†๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ํŠน์„ฑ ๋•Œ๋ฌธ์— ์ž„์˜๋กœ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ด๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค๋Š” ํŠน์„ฑ์ด ์กด์žฌํ•œ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋งŒ์•ฝ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚˜์•ผํ•  ๋•Œ๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ๊ธฐ์กด ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•˜๋Š” ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๊ณค ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ๋งŒ ๋ณธ๋‹ค๋ฉด ๋ฐฐ์—ด์ด ์•ˆ ์ข‹์•„๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ์— ๋“ฑ์žฅํ•˜๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋” ์ข‹์•„๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ๋ฐฐ์—ด์ด ์•ˆ ์ข‹์€ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

๋ฐฐ์—ด์€ index ๊ฐ’์„ ํ† ๋Œ€๋กœ ์›์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰์—์„œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(1) ์œผ๋กœ ์ƒ์ˆ˜ ์‹œ๊ฐ„์ด ๋“ ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ฐ„๋‹จํ•œ ๊ณณ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

 

C ์–ธ์–ด์—์„œ์˜ ๋ฐฐ์—ด

 

C ์–ธ์–ด ์—์„œ ๋ฐฐ์—ด์€ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์œผ๋กœ ์ œ๊ณต๋œ๋‹ค.

 

์•ž์„œ ์ด์•ผ๊ธฐํ–ˆ๋“ฏ ๋ฐฐ์—ด์€ ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ๋ผ๊ณ  ํ–ˆ์—ˆ๋‹ค.

 

๊ทธ๋Ÿผ ์ด๋Ÿฐ ๋ฐฐ์—ด์ด ์™œ ์‚ฌ์šฉ๋ ์ง€ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•œ๋‹ค.

 

๋งŒ์•ฝ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

 

int student1, student2, student3, student4, student5, student6;

student1 = 88;
student2 = 89;
student3 = 73;
student4 = 65;
student5 = 99;
student6 = 100;

 

ํ•™์ ์„ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์€ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค.

 

๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ int ํ˜• ๋ฐ์ดํ„ฐ์ธ ํ•™์ ์„ ๋ฐฐ์—ด์„ ์ด์šฉํ•œ๋‹ค๋ฉด ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

int student[] = {88, 89, 73, 65, 99, 100};

// ํ˜น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค
int teacher[6];

teacher[0] = 88;
teacher[1] = 89;
teacher[2] = 73;
teacher[3] = 65;
teacher[4] = 99;
teacher[5] = 100;

 

๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค

 

๋งŒ์•ฝ ๋ฐฐ์—ด์˜ ํŠน์ • ์ˆœ์„œ์˜ ๊ฐ’์„ ์–ป๊ณ ์‹ถ์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

 

์ฆ‰, 3๋ฒˆ์งธ์— ์œ„์น˜ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ ์‹ถ์„ ๋•Œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ž€ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฐ์—ด์˜ ํŠน์ • ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

#include <assert.h>

int main() {
    int student[] = {88, 89, 73, 65, 99, 100};

    assert(student[0] == 88); // ์ฒซ ๋ฒˆ์งธ ์›์†Œ 0
    assert(student[3] == 65); // n ๋ฒˆ์งธ ์›์†Œ (์ฐพ์œผ๋ ค๋Š” ์›์†Œ ์ˆœ์„œ - 1)
    assert(student[5] == 100); // ๋งˆ์ง€๋ง‰ ์›์†Œ (๋ฐฐ์—ด ๊ธธ์ด - 1)
}

 

๋ฐฐ์—ด์€ 0 ๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์‚ฌํ•ญ์€ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š”๋ฐ, ๋‹ค์Œ ํฌ์ธํ„ฐ ํฌ์ŠคํŒ…์—์„œ ๋‚˜์˜ค๋ฏ€๋กœ ์ž ์‹œ ๋„˜์–ด๊ฐ€๋„๋ก ํ•˜์ž.

 

์œ„์˜ ๊ทœ์น™์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐฐ์—ด์—์„œ ํŠน์ • ์›์†Œ์˜ ์œ„์น˜(n ๋ฒˆ์งธ) ์˜ ๊ฐ’์„ ์–ป๊ธฐ ์œ„ํ•ด์„œ๋Š” n-1 ๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•˜๋ฉด ๋œ๋‹ค!

๋Œ“๊ธ€