๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜

[์ด๋ก ] ๋ฐฐ์—ด (feat. ์ฝ”๋“œํŠธ๋ฆฌ ์กฐ๋ณ„๊ณผ์ œ : 3์ฃผ์ฐจ)

by bamDal 2024. 8. 4.

 

์ •์  ๋ฐฐ์—ด

  • ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ๋™์‹œ์— ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋ฉฐ, ์„ ์–ธ ์ดํ›„์—๋Š” ํฌ๊ธฐ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.

๋™์  ๋ฐฐ์—ด

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

 

์ •์  ๋ฐฐ์—ด์˜ ๊ธฐ๋ณธ ์—ฐ์‚ฐ

์‚ฝ์ž…

  • ๋ฐฐ์—ด์˜ ์•ž์ด๋‚˜ ๊ฐ€์šด๋ฐ์— ๊ฐ’์ด ์‚ฝ์ž…๋œ๋‹ค๋ฉด, ์ƒˆ๋กœ์šด ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ž๋ฆฌ๋ฅผ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ฐ’๋“ค์˜ ์ž๋ฆฌ ์ด๋™์ด ํ•„์š”ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์ธ(์ตœ์•…์˜ ์ƒํ™ฉ์—์„œ์˜) ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.
  • ์ฆ‰, ๋‹ค๋ฅธ ๊ฐ’๋“ค์˜ ์ž๋ฆฌ ์ด๋™์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ƒํ™ฉ( ๋งจ ๋’ค์— ๊ฐ’์ด ์‚ฝ์ž…๋˜๋Š” ๊ฒฝ์šฐ)๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์ด๋‹ค.

์‚ญ์ œ

  • ์‚ฝ์ž…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐฐ์—ด์˜ ๋งจ ๋’ค์— ๊ฐ’์ด ์‚ญ์ œ๋œ๋‹ค๋ฉด ์‚ญ์ œ ํ›„ ๋‹ค๋ฅธ ๊ฐ’๋“ค์˜ ์ž๋ฆฌ ์ด๋™์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.
  • ๋ฐฐ์—ด์˜ ์•ž์ด๋‚˜ ๊ฐ€์šด๋ฐ์—์„œ ๊ฐ’์„ ์‚ญ์ œํ•œ๋‹ค๋ฉด ์‚ญ์ œ๋œ ๊ฐ’์˜ ๋นˆ ์ž๋ฆฌ๋ฅผ ์ฑ„์›Œ์•ผ ํ•˜๋ฏ€๋กœ ๋‚˜๋จธ์ง€ N-1 ๊ฐœ์˜ ๊ฐ’์ด ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.

ํƒ์ƒ‰

  • ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ชจ๋“  ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.
  • ์ฐพ๋Š” ๊ฐ’์ด ๋งจ ์•ž์ด๋‚˜ ๋’ค์ธ ๊ฒฝ์šฐ๋Š” O(1)์ด๊ฒ ์ง€๋งŒ, ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ตœ์•…์˜ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•˜๋ฏ€๋กœ...

 

์ •์  ๋ฐฐ์—ด๊ณผ ๋™์  ๋ฐฐ์—ด์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ โฑ๏ธ

  • ๋™์  ๋ฐฐ์—ด์€ ์‚ฝ์ž…, ์‚ญ์ œ, ํƒ์ƒ‰ ๊ณผ์ •์€ ๋ชจ๋‘ ์ •์  ๋ฐฐ์—ด๊ณผ ๋™์ผํ•˜์ง€๋งŒ, ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์ฐจ์ง€ํ•œ๋‹ค.
  ์ •์  ๋ฐฐ์—ด (Array) ๋™์  ๋ฐฐ์—ด (Dynamic Array)
์‚ฝ์ž… O(N) O(N)
์‚ญ์ œ O(N) O(N)
ํƒ์ƒ‰ O(N) O(N)
K๋ฒˆ์งธ ์›์†Œ ๊ตฌํ•˜๊ธฐ O(1) O(1)
  • K๋ฒˆ์งธ ์›์†Œ๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ์—” ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ  ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ O(1) ์ด๋‹ค.

 

Java ์—์„œ์˜ ๋™์  ๋ฐฐ์—ด (ArrayList)

import java.util.ArrayList;

public class Main {
	public static void main(String[] args) {
    	ArrayList<Integer> al = new ArrayList<>(); // ์ •์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•  ArrayList ์„ ์–ธ
        
        // 1. add(E)
        al.add(2); 						// al : [2]
        al.add(3); 						// al : [2, 3]
        
        // 2. remove(index)
        al.remove(1); 					// ์ธ๋ฑ์Šค 1์„ ์‚ญ์ œ
            
        // 3. size()
        al.size(); 						// ํ˜„์žฌ ArrayList์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
               
        // 4. get(index)
        al.get(0); 						// ์ธ๋ฑ์Šค 0์— ์žˆ๋Š” ์›์†Œ๋ฅผ ์กฐํšŒ
        
    }
}

๋™์  ๋ฐฐ์—ด(ArrayList) ๊ธฐ๋ณธ ๋ฌธ์ œ

 

 

์ž๋ฐ”์—์„œ ์ •์  ๋ฐฐ์—ด๊ณผ ๋™์  ๋ฐฐ์—ด์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ??

์ฐจ๊ทผ์ฐจ๊ทผ.. ๊ณต๋ถ€ํ•˜๊ณ  ์•Œ์•„๋ณด๊ณ  ์ •๋ฆฌํ•ด๋ด์•ผ๊ฒ ๋‹ค..

์ถ”ํ›„์—...