์ค๋์ ๋ฐฐ์ด์ ๋ํด์ ๋ฐฐ์๋ณด์
๋ฐฐ์ด์ด๋?
๊ฐ์ ์๋ฃํ์ ๊ฐ๋ค์ ๋์ดํ๋ ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ ํํ ์๋ C์ธ์ด๊ฐ์ ์ธ์ด์๋ ๋ฐฐ์ด์ด ์กด์ฌํ๋ค.
์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๊ทธ๋ฌํ ๋ฐฐ์ด์ด ์๋ฐ์๋ ์กด์ฌํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด์ ๋ถํฐ ์๋ฐ์ ๋ฐฐ์ด์ ๋ํด ์์๋ณด์!!
๋ฐฐ์ด์ ์ ์ฅ๊ณต๊ฐ์ ๋์ด์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฐฐ์ด์ ์ ์ฌ์ฉํ๋๊ฑธ๊น?
1. ๊ท์น์ด ์๋ ๊ฐ์ ๊ท์น์ฑ์ ๋ถ์ฌํ๊ธฐ ์ํด์
2. ์ ์ฅ๊ณต๊ฐ ์ฌ๋ฌ๊ฐ๋ฅผ ์ด๋ฆ ํ๊ฐ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด์
๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์ฐ๋ฆฌ๋ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค
๊ทธ๋ ๋ค๋ฉด ๋ฐฐ์ด์ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ๋จผ์ ์์๋ณด์
๋ฐฐ์ด์ ์ ์ธ์ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋ค
์๋ฃํ[ ] ๋ฐฐ์ด๋ช ;
ex) int [ ] arr -> int ํ์ ์ ๋ณ์ arr ์ ์ธ
๊ทธ๋ ๋ค๋ฉด ๋ฐฐ์ด์ ์์ฑ์ ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๊น?
new ์๋ฃํ[๋ฐฐ์ด์ ํฌ๊ธฐ]; ์ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋ค.
์ฆ, ๋ฐฐ์ด์ ์ ์ธ๊ณผ ๋ฐฐ์ด์ ์์ฑ์ ํฉ์น๋ฉด ๋ค์๊ณผ ๊ฐ์์ง๋ค
ex) int [ ] arr = new int[5];
---> int ๋ฐฐ์ด ํ์ ๋ณ์ arr์ intํ์ ์ ์ ์ฅ๊ณต๊ฐ 5๊ฐ๊ฐ ๋์ด๋ ๋ฐฐ์ด์ "์ฃผ์๊ฐ"์ ์ ์ฅํ๋ค.
๋ฐ๋ก ์ด ๋ถ๋ถ์ด ์ค์ํ๋ฐ, ์ฃผ์๊ฐ์ ์ ์ฅํ๋ค๋ ์ ์ด point๋ค.
๊ทธ๋ผ ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ์ด๋ ๊ฒ ๋ฐฐ์ด์ ์์ฑํ๊ณ
System.out.println(arr); ์ ํ๋ฉด ๋ฌด์จ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ๊น??
๋ฐ๋ก ์ฃผ์๊ฐ์ด ๋์จ๋ค. ์ด๋ ํ ๊ฒฐ๊ณผ๊ฐ ์๋๋ผ ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์๋ฆฌ์ ์ฃผ์๊ฐ์ด ๋์ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ์ด๋ฌํ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ๊น??
๋ฐฐ์ด์ ๊ตฌ์กฐ๋ฅผ ์ ์ ์๋ค๋ฉด ๊ฐ๋จํ ์ด์ผ๊ธฐ๋ค.
๋ค์๊ณผ ๊ฐ์ ํ๋ฅผ ๋ณด์.
//๋ฐฐ์ด์ ๊ตฌ์กฐ
ex) int[] arr = new int[3];
stack ์์ญ heap ์์ญ
arr adress1 adress2 adress3
[ adress1 ]----------------- [ ][ ][ ]
0 1 2 ==> ์ธ๋ฑ์ค(index)
์ฐ๋ฆฌ๋ stack ์์ญ์์ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ๊ทธ ๋ณ์์ heap์์ญ์ ์ฃผ์๊ฐ์ ํ ๋นํ๋ค.
arr์ด๋ผ๋ ๊ฒ์ด heap์์ญ์ ์๋ adress1,adress2,adress3์ ๋์ด์ค ๊ฐ์ฅ ์์์๋
adress1์ ์ฃผ์๊ฐ์ ํ ๋นํ๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๊ฐ์ ๊ตฌํ๊ณ ์ถ๋ค๋ฉด ์ฐ๋ฆฌ๋ ์ธ๋ฑ์ค๊ฐ์ ํ๊ธฐํด์ผํ๋ค.
* ์ ๊ทผ ๋ฐฉ๋ฒ : arr[0], arr[1], arr[2]
1. stack ์์ญ : ์ ์ฅ๊ณต๊ฐ์ ์ด๋ฆ์ ๋ถ์ด๊ณ , ์ด๋ฆ์ผ๋ก ์ ์ฅ๊ณต๊ฐ์ ์ฐพ์๊ฐ๋ค
heap ์์ญ : ์ ์ฅ๊ณต๊ฐ์ ์ด๋ฆ์ ๋ถ์ด์ง ์๊ณ , ์ฃผ์๊ฐ(์ฐธ์กฐ๊ฐ)์ ํตํด ์ ์ฅ๊ณต๊ฐ์ ์ฐพ์๊ฐ๋ค
2. stack ์์ญ์ int[] ์๋ฃํ์ ๋ณ์ arr์ด ํ ๋น๋๋ค(์์ฑ๋๋ค)
3. new ์ฐ์ฐ์๋ฅผ ํตํด heap ์์ญ์ int ํ์
์ ์ฅ๊ณต๊ฐ 3๊ฐ๊ฐ ๋์ด๋์ด ํ ๋น๋๋ค(์์ฑ๋๋ค)
4. ๋ณ์ arr์ heap์์ญ์ ํ ๋น๋ ์ ์ฅ๊ณต๊ฐ ์ค 0๋ฒ์งธ (์ ์ผ ์์ ์ ์ฅ๊ณต๊ฐ)์ ์ฃผ์๊ฐ์ด ์ ์ฅ๋๋ค
5. ๋ณ์ arr์๋ ๋์ด๋ ์ ์ฅ๊ณต๊ฐ ์ค ์ ์ผ ์์ ์ ์ฅ๊ณต๊ฐ(0๋ฒ์งธ)์ ์ฃผ์๊ฐ์ด ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก
arr ๋ณ์๋ฅผ ํตํด []์์ ์ ๊ทผํ๊ณ ์ถ์ ์ ์ฅ๊ณต๊ฐ์ ์์ ๋ฒํธ๋ฅผ ๋ช
์ํ์ฌ ํน์ ์ ์ฅ๊ณต๊ฐ์ ์ ๊ทผํ๋ค
6. ์ฌ๋ฌ๊ฐ์ ์ ์ฅ๊ณต๊ฐ์ ๋ถ์ฌ๋ ์์๋ฒํธ -> ์ธ๋ฑ์ค(inedex) -> 0๋ถํฐ ์์ํ์ฌ 1์ฉ ์ฆ๊ฐ
* ์ผ๋ฐ ๋ณ์ : ๋ฐ์ดํฐ๋ฅผ ์ง์ ๊ฐ์ง๋ ์๋ฃํ(๊ธฐ๋ณธ์๋ฃํ)์ ๋ณ์
* ์ฐธ์กฐ ๋ณ์ : ๋ฐ์ดํฐ๊ฐ ์์นํ ์ฃผ์๊ฐ์ ๊ฐ์ง๋ ์๋ฃํ(์ฐธ์กฐ์๋ฃํ)์ ๋ณ์
-> String(๋ฌธ์์ด), ๋ฐฐ์ด, ํด๋์ค ๋ฑ...
๊ทธ๋ฌ๋ฉด ์ด ์ผ๋ จ์ ๊ณผ์ ๋ค์ ์ฝ๋๋ก ์ง์ ์ณ๋ณด๋ฉฐ ์ดํดํด๋ณด์.
int [ ] arr; ์ ์ ์ธํ๊ณ
arr = new int[3]; ์ผ๋ก ํฌ๊ธฐ 3์ ๋ฐฐ์ด์ ๋ง๋ค์๋ค.
์ด ์ํฉ์์ arr์ ์ถ๋ ฅํ๋ฉด ์ฃผ์๊ฐ์ด ๋์ค๊ฒ ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด int [ ] arr4์ ๊ฐ 100๊ณผ 200์ ๋ฐ๋ก ํ ๋นํ๊ณ ,
arr4๋ง ์ถ๋ ฅํ๋ฉด ์ญ์๋ 100์ ๊ฐ์ด ์๋ ์๋ฆฌ์ ์ฃผ์๊ฐ์ด ๋์ค๊ฒ ๋๊ณ ,
arr[0]์ผ๋ก์จ ๊ฐ์ ์ ๊ทผํ๊ฒ ๋๋ฉด ์ฒซ๋ฒ์งธ ์ซ์์ธ 100์ด ์ถ๋ ฅ๋๊ฒ ๋๋ค
๋ํ ๋ฐฐ์ด์ null๊ฐ์ ํ ๋น ํ ๊ฒฝ์ฐ null๊ฐ์ด ๋์ค๊ฒ ๋๋ค.
์ด๊ฒ์ด ๋ฐฐ์ด์ ๊ธฐ๋ณธ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ for๋ฌธ๊ณผ ๋ฐฐ์ด์ ๊ฒฐํฉํ ์ ์์ง ์์๊น???
๋ค์ ์ฝ๋๋ฅผ ๋ณด์.
๋ฐฐ์ด์ ํ์ฌ ํฌ๊ธฐ๊ฐ 4์นธ์ด๋ฉฐ ๊ฐ์ 10, 20, 30, 40์ด ์ ์ฅ๋์ด์๋ ์ํ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ ๊ฐ๊ฐ์ ์ธ๋ฑ์ค์ ์ ๊ทผํด์ ๊ฐ์ ์ง์ ๋ฝ์๋ผ ์ ์์ ๊ฒ์ด๋ค.
์ด์ for๋ฌธ์ ๋ณด๋ผ.
for(int i =0; i < arr.length; i++) ๋ฅผ ๋ณด๋ฉด ์ฒ์ ๋ณด๋ ๊ฒ์ด ์๋ค. ๋ฐ๋ก length์ธ๋ฐ, ์๊ฐํด๋ณด์
๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ด์ ๋ง๋ค์ด๋๊ณ ๋์ค์ ๋ฐฐ์ด์ ์์ ํ๋ค๊ณ ์น์. ๊ทธ๋ ๋ค๋ฉด for๋ฌธ์ ์กฐ๊ฑด์๋ ๋ฐ๊ฟ์ค์ผํ๊ณ
์ฌ๋ฌ๊ฐ์ง๋ก ๊ท์ฐฎ์ ์ผ์ด ์๊ธด๋ค. ์ฆ, ์ ์ฐํ์ง ์๋ค. ์ด๋ฐ ์ผ์ ๋๋นํด์ ์ฐ๋ฆฐ ๋ฐฐ์ด์ ํฌ๊ธฐ ์์ฒด๋ฅผ ์กฐ๊ฑด์์
๋ฃ์ด์ฃผ๋ ๊ฒ์ด๋ค. ๊ทธ ์ฝ๋๊ฐ ๋ฐ๋ก .length ์ด๋ค. ์์ ์ฝ๋์์ ์ฆ arr3.length๋ 4์ธ ๊ฒ์ด๋ค.
๋ง์ฝ ํฌ๊ธฐ๊ฐ 7๋ก ๋ฐ๋์ด๋ arr3.length๋ ๊ฐ์ด 7๋ก ๋ฐ๋๋ ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ for๋ฌธ๊ณผ ๊ฒฐํฉํ ๋ฐฐ์ด์ ํน์ฑ์ ์์๋ณด์๋ค.
๊ธฐ๋ณธ์ ์ธ ๊ฒ์ด๊ธฐ๋ ํ๋ ๊ฐ๊ณผํ๊ธฐ ์ฌ์ด ๋ด์ฉ์ผ ์ ์๋ ๋ด์ฉ์ด๋ฏ๋ก ๊ณต๋ถํ๋ ๊ฒ์ ์ ์๋ฏธํ๋ค.
๋ฐฐ์ด์ ์ค์ํ ๋ด์ฉ ์ค ํ๋์ด๋ ์ ํํ ๊ณต๋ถํ๊ณ ๋์ด๊ฐ๋๋ก ํ์!
'์ธ์ด > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA : ๋ฐฐ์ด(2) (0) | 2024.08.09 |
---|---|
JAVA : ์ฌ๋ฌ๊ฐ์ง ์๋ฃํ์ ๋ฐฐ์ด (0) | 2024.08.09 |
JAVA : ๊ธฐํ ์ ์ด๋ฌธ (1) | 2024.08.08 |
JAVA : Up & Down game (while๋ฌธ) (0) | 2024.08.08 |
JAVA : for๋ฌธ, while๋ฌธ, do-while๋ฌธ (0) | 2024.08.08 |