πλ°©μ‘ν΅μ λνκ΅/π’μλ£κ΅¬μ‘°
[μλ£κ΅¬μ‘°] 2κ° - λ°°μ΄
junbin2
2025. 8. 22. 12:28
β 1. λ°°μ΄μ μ μ

- μΌμ ν μ°¨λ‘λ κ°κ²©μ λ°λΌ λ²μ¬ λμ
- μ°¨λ‘(μμ)μ κ΄λ ¨λ κΈ°λ³Έμ μΈ μλ£κ΅¬μ‘°μ΄λ€.
- μμμ λ©λͺ¨λ¦¬ 곡κ°(λ©μΈ λ©λͺ¨λ¦¬, DDR)μ 물리μ μΈ μμΉλ₯Ό μμμ μΌλ‘ κ²°μ νλ νΉμ§μ΄ μλ€.
- λ°°μ΄μ μμλ λ©λͺ¨λ¦¬ 곡κ°μμ μ μ₯λλ μμκ°μ 물리μ μμμ κ°λ€.
- μΈλ±μ€μ μμκ°( indext, value ) μ μμΌλ‘ μ΄λ£¨μ΄μ Έ μμ.
(1) λ°°μ΄μ μλ―Έ
- μΈλ±μ€λ‘ ννλλ μμλ₯Ό κ°λ νΉμ λ°°μ΄μ΄ μ‘΄μ¬νλ©°, κ·Έκ³³μλ μμλλ‘ μμκ° λ€μ΄κ°κ² λλ€.
- μμλ€μ΄ λͺ¨λ κ°μ μλ£νκ³Ό κ°μ ν¬κΈ°μ κΈ°μ΅ κ³΅κ°μ κ°μ§κ² λλ€.
- λ°°μ΄μ μΈλ±μ€κ°μ μ΄μ©ν΄μ μμκ°μ μ κ·ΌνκΈ° λλ¬Έμ μ§μ μ κ·Όμ΄ κ°λ₯ν¨
[ λ°°μ΄μ μΈλ±μ€ κ° ]
- μ»΄ν¨ν°μ λ΄κ΅¬κ΅¬μ‘°λ λ©λͺ¨λ¦¬ μ£Όμμ 무κ΄νκ² κ°λ°μμκ² κ°λ μ μΌλ‘ μ μλλ μΆμνλ κ°μ΄λ€.
- λ©λͺ¨λ¦¬ μ£Όμκ°μ μ€μ λ©λͺ¨λ¦¬μ 물리μ μΈ μμΉκ°μ μλ―Έν¨.
- λ°°μ΄μ(μΆμνλ) μΈλ±μ€κ°μ νλ‘κ·Έλλ° μΈμ΄μ μ»΄νμΌ κ³Όμ μ ν΅ν΄ λ©λͺ¨λ¦¬ μ£Όμκ°κ³Ό μ°κ²°μ΄ λ¨.
- μ¦, νλ‘κ·Έλ¨ μ€νκ³Ό λμμ μ΄μ체μ κ° μ¬μ©λμ§ μλ λ©λͺ¨λ¦¬ 곡κ°μ μ΄κΈ°νν΄μ μ£Όμκ°κ³Ό λ°μ΄ν°λ₯Ό ν λΉν΄μ€.

- μΈλ±μ€λ μΆμνλ κ°λ μ΄κ³ , μ£Όμκ°μ κ·Έ μΆμνλ₯Ό ꡬνν μ€μ νλμ¨μ΄ λ©λͺ¨λ¦¬ μΈ‘λ©΄μ μ£Όμκ°μΈ κ²μ΄λ€.
- μ¬μ€μ ꡬνν λ©λͺ¨λ¦¬ μ£Όμκ° λν μ΄μ체μ κ° ν λΉν΄μ£Όλ κ°μ΄μ§ μ€μ λ©λͺ¨λ¦¬λ κ·Έλ₯ μ λ‘λ§ μ΄λ£¨μ΄μ Έ μμ.
β 2. λ°°μ΄μ μΆμ μλ£ν
(1) μΆμμλ£ν
- κ°μ²΄ λ° κ΄λ ¨λ μ°μ°μ μ μλ‘ κ΅¬μ±λ¨.
- μλ£κ΅¬μ‘° ꡬνμ μ μ€κ³ λ¨κ³
- μλ£μ μΆμν κ²°κ³Όλ₯Ό μνμ μΌλ‘ μ μ λ΄λ¦°κ²μ΄ μΆμμλ£νμ΄λ€.
- μ΄ν μ΄ μΆμμλ£νμ ꡬννλ©΄ μλ£κ΅¬μ‘°κ° λλκ²μ.
(2) μλ£ν
- λ©λͺ¨λ¦¬ μ μ₯ ν λΉμ μν λ³μ μ μΈ
- μ¦, λ³μκ° λ©λͺ¨λ¦¬λ₯Ό ν λΉ λ°κΈ° μν΄μ νμλλ 곡κ°μ μ μνλκ²μ΄ μλ£νμ΄λΌκ³ ν¨.
- μλ£κ΅¬μ‘°μ ꡬν λ¨κ³(νλ‘κ·Έλλ° μΈμ΄λ₯Ό μ΄μ©ν μ μΈ)μμλ μλ£νμ΄ μ μΈμ΄ λ¨.
(3) ADT Array κ°μ²΄: <i index, e Element> μλ€μ μ§ν©
- Index: μμλ₯Ό λνλ΄λ μμμ μ νμ§ν©
- Element: μλ£νμ΄ κ°μ μμμ μ§ν©

- (1) create: λ°°μ΄μ μμ±ν΄λ΄λ μ°μ°
- (2) retrieve: κ° μ°ΎκΈ°
- (3) store: μνλ μμΉμ κ° μ μ₯
- μ΄κ²μ΄ μνμ μΌλ‘ λ§λ€μ΄μ§ μΆμμλ£ν μ¦, μ€κ³κ° λ μ μμ.
(4) μ 리
- κΈ°λ³Έμλ£νμ κΈ°λ³Έμ μΌλ‘ μ 곡ν΄μ£Όλ μλ£νμ΄κ³ , μΆμμλ£νμ λ΄κ° μμλ‘ λ§λ€ μ μλ λλ
- μ¦, κ°μ²΄ λν μΆμμλ£ν λ²μ£Ό μμ λ€μ΄κ°λ€κ³ 보λκ² λ§λ κ² κ°μ.
- κ²°λ‘ μ μλ°μμ ꡬν λ μλ£κ΅¬μ‘°λ κ²°κ΅ μΆμμλ£νμ κ°μ²΄λ‘ ꡬνν κ²μΌλ‘ λ³Ό μ μλ€.
β 3. λ°°μ΄μ°μ°μ ꡬν
(1) λ°°μ΄μ μμ±
void create(int n) { // n = 5
int a[n];
int i;
for(i=0, i<n, i++){
a[i] = 0;
}
}
int a[3]; // κ°λ°μκ° νΈμΆνλ©΄ create() κ° νΈμΆμ΄ λλ€.
- ν΄λΉ ꡬνμΌλ‘ λ°°μ΄μ λ§λ€κ² λλ©΄, λ©λͺ¨λ¦¬ 곡κ°μ μ μλ‘ μ΄λ£¨μ΄μ§ λ°°μ΄μ΄ λ§λ€μ΄μ§κ³ λ΄λΆμμλ 3κ°μ 곡κ°μ΄ ν λΉλ¨.
- ν΄λΉ create() ν¨μλ₯Ό λ΄λΆμ μΌλ‘ νΈμΆ νλ€κ³ μκ°νλ©΄ λλ€. νμ§λ§ C μΈμ΄μμλ ν¨μ νΈμΆμ μνκ³ μμ.
(2) λ°°μ΄κ°μ κ²μ(retrieve μ°μ°)
#define array_size 5
int retrieve(int *a, int i) {
if(i >= 0 && i < array_size )
return a[i];
else {
printf("Erro\n";
return(-1);
}
}
K = a[2]; // 2λ²μ§Έμ κ°μ λ°ν
- a[2] λ₯Ό νλ©΄ λ΄λΆμ μΌλ‘ retrieve() νΈμΆλ‘ 2λ²μ§Έμ λ°°μ΄μ κ°μ λ°ν λ°μ μ μλ€. ( μ»΄νμΌλ¬κ° ν΄μ€ Cλ ν¨μ μμ )
(3) λ°°μ΄κ°μ μ μ₯(store μ°μ°)
#define array_size 5
void store(int *a, int i, int e) { // i = 3, e =35
if(i >= 0 && < array_size) {
a[i] = e;
} else {
printf("Error\n");
}
}
a[3] = 3; // μ μ₯ λ΄λΆμ μΌλ‘ ν¨μ νΈμΆ ( Cλ μλ )
- a[3] = 3; store() ν¨μκ° νΈμΆμ΄ λλ©° 3λ²μ§Έ μΈλ±μ€μ μμκ°μΈ 3μ λ£μ μ μκ² λλ€.
(4) μ 리
- μΆμμλ£νμ κΈ°λ°μΌλ‘ μ€μ νλ‘κ·Έλλ° μΈμ΄μμ μλ£κ΅¬μ‘°λ₯Ό ꡬν νκ² λλ κ²μ΄λ€.
- λ©λͺ¨λ¦¬λ λΉνΈλ‘ λ μ ννλ₯Ό λκ³ μμΌλ©°, λΉνΈλ§λ€ μ£Όμκ°μ κ°μ§κ³ μλ€.
- νλ‘κ·Έλλ°μμλ λΉνΈ λ¨μκ° μλ λ°μ΄νΈ λ¨μλ‘ κ΄λ¦¬κ° λλ€.
- μλ£νμ λ§λ λ°°μ΄μ΄ λ§λ€μ΄μ§κ² λλ©΄, ν΄λΉ μλ£νμ λΉνΈμ λ§κ² λ°°μ΄ μΈλ±μ€μ νλνλ ν¬κΈ°κ° μ ν΄μ§κ² λλ€.
- μ¦, char(λ¬Έμ) νμ μ 1λ°μ΄νΈλ‘ 8λΉνΈμ΄λ©° char ννλ‘ λ°°μ΄μ΄ λ§λ€μ΄μ§λ©΄ μΈλ±μ€λ§λ€ 1λ°μ΄νΈ(8λΉνΈ)μ ννλ₯Ό λκ² λλ€.
β 4. 1μ°¨μ λ°°μ΄
(1) 1μ°¨μ λ°°μ΄μ μ μ
- A[i] λ λ°°μ΄μ 첫 λ²μ§Έ μμ A[0] μ΄ μ μ₯λ λ©λͺ¨λ¦¬ μ£ΌμμΈ a λ‘λΆν° μμνμ¬, A[0] λΆν° A[i-1] κ°κΉμ§ iκ°μ λ°°μ΄ A[]λ₯Ό μ§λμ μ μ₯λ¨
- λ°λΌμ, A[] μ λ©λͺ¨λ¦¬ μμμ£Όμλ₯Ό a λΌκ³ κ°μ νλ©΄, A[i] μ λ©λͺ¨λ¦¬ μ μ₯ μ£Όμλ [a +i*k] κ° λ¨
(2) 1μ°¨μ λ°°μ΄μμμ μ£Όμ κ³μ°
- μ½κ²λ§ν΄, νλμ¨μ΄ λ©λͺ¨λ¦¬ μΈ‘λ©΄μμ 1λ°μ΄νΈμ μΈλ±μ€λ₯Ό κ°μ§λ λ°°μ΄μ΄ μ‘΄μ¬νλ€κ³ κ°μ νλ©΄ A[0]... λͺ¨λ λ°°μ΄ μμκ°μ 1λ°μ΄νΈ μ¦, 8λΉνΈμ 곡κ°μ κ°μ§κ² λλ€.
- λν νλμ¨μ΄ λ©λͺ¨λ¦¬ μΈ‘λ©΄μμλ λΉνΈκ° λͺ¨μΈ μ ννλ₯Ό κ°μ§λ©°, μ΄μ체μ λ μ΄ λΉνΈλ₯Ό λ°μ΄νΈ λ¨μλ‘ μͺΌκ°μ κ΄λ¦¬λ₯Ό νλ€.
- μ¦, μ£Όμκ°μ λ°μ΄νΈ λ¨μλ‘ κ°μ§κ² λλ€λ μλ―Έμ΄λ€.
- λν λ°°μ΄μ νΉμ μΈλ±μ€μ μμκ°μ μ»μ΄λ΄λ €λ©΄ A[0] λ°°μ΄μ μμμ£Όμλ₯Ό a , i = μΈλ±μ€, k = λ°μ΄νΈ μ λΌκ³ κ°μ μ νκ³ A[3] μ μ₯ μ£Όμλ₯Ό ꡬνλ€κ³ κ°μ νλ©΄ a + i * k μ κ°μΌλ‘ λ°°μ΄μ ν¬κΈ°λ₯Ό ꡬν μ μλ€.
- κ³μ°νλ©΄ μ£Όμ = 0x0001 + 2 * 1 = 0x0003 μ κ²°κ³Όλ₯Ό μ»κ² λλ€. μ¦, μ£Όμκ° 0x0003 μ μ»μ μ μλ€.
β 5. λ°°μ΄μ νμ₯
(1) νλ ¬μ λ°°μ΄ νν
- νλ ¬μ μ»΄ν¨ν°μμ νννκΈ°μλ 2μ°¨μ λ°°μ΄μ΄ λ§€μ° μ ν©ν¨.
(2) νλ ¬μ 2μ°¨μ λ°°μ΄ νν

(3) ν μ°μ λ°°μ΄

- 1μ°¨μ λ°°μ΄μ μ¬λ¬ κ° μμ λμ κ²μ΄ 2μ°¨μ λ°°μ΄
- μ¦, 2μ°¨μ λ°°μ΄μ μͺΌκ°μ 1μ°¨μ λ°°μ΄λ‘μ¨ λ΄μΌλ‘μ¨ λ©λͺ¨λ¦¬μ 2μ°¨μ λ°°μ΄μ νν ν μ μκ² λλ€.
(4) ν μ°μ ν λΉ

- κ°λ‘μ 1μ°¨μ λ°°μ΄ λ¨μλ‘ λ©λͺ¨λ¦¬ μμμ μ°μ ν λΉν¨
- νμ μ°μ μΌλ‘ νμ¬, μ»΄ν¨ν° λ©λͺ¨λ¦¬μ μ μ₯μ νκ² λλ€.
- νλ‘κ·Έλλ° μΈμ΄λ§λ€ μ½κ°μ© λ€λ₯Ό μ μμ.
(5) μ΄ μ°μ λ°°μ΄

- 1μ°¨μ λ°°μ΄μ μ¬λ¬ κ° μΈμ λμ κ² λν 2μ°¨μ λ°°μ΄λ‘ λ³Ό μ μμΌλ©°, μ΄μ μ°μ μΌλ‘ νλ λ°°μ΄μ΄λ€.
- ν΄λΉ μ΄μ λ©λͺ¨λ¦¬ μ μ μμλλ‘ μ μ₯μ΄ λλ€.
(5) μ΄ μ°μ ν λΉ

- μΈλ‘μ 1μ°¨μ λ°°μ΄ λ¨μλ‘ λ©λͺ¨λ¦¬ μμμ μ°μ ν λΉν¨
(6) C μΈμ΄ μμμ 2μ°¨μ λ°°μ΄

- C μΈμ΄μμλ ν μ°μ μμλ‘ μ μ₯μ΄ λλ©°, A[3][5] μ μ μΈνλ©΄ λ€μκ³Ό κ°μ λ°°μ΄μ΄ μμ±μ΄ λλ€.
β 6. ν¬μνλ ¬μ κ°λ (νν)
(1) ν¬μνλ ¬

- μμκ°μ΄ 0μΈ μμκ° κ·Έλ μ§ μμ μμλ³΄λ€ μλμ μΌλ‘ λ§μ κ²½μ° μ¦, μμκ° 0μ΄ κ³Όλ°μ λμ΄κ°λ κ²½μ° ν¬μνλ ¬μ΄λΌν¨.

- νμ¬ 2μ°¨μ λ°°μ΄μ λ©λͺ¨λ¦¬μ 72κ°μ 곡κ°μ μ¬μ©νκ³ μμΌλ©° 10κ°μ μ€ μ¬μ© μμκ°, 62κ°μ 0 μμκ°μ κ°μ§κ³ μλ€.
- λ¬Έμ λ μ¬μ©νμ§ μλ μμκ° λλ¬Έμ λ©λͺ¨λ¦¬μ λΆνμν 곡κ°μ μ°¨μ§νκ³ μλ λ¬Έμ κ° μμ
(2) ν¬μνλ ¬μ ν¨μ¨μ λ°°μ΄νν

- 0μΈ μμλ μ μ₯νμ§ μκ³ 0μ΄ μλ κ°λ§μ λ°λ‘ λͺ¨μμ μ μ₯νλ λ°©μ
- λ©λͺ¨λ¦¬ λλΉλ₯Ό λ§κ³ ν¨μ¨μ±μ ν₯μ μν¬ μ μλ€.
- λΆνμν κ°μΈ 0μ λΉΌκ³ νκ³Ό μ΄μ μΈλ±μ€κ°κ³Ό μμκ°μ λ§€μΉν΄μ λ§λλ λ°©μ
- νμ§λ§, μ΄λ°©μ λν λ©λͺ¨λ¦¬ μ±λ₯μ μ¬λΌκ°μ§λ§ μ°μ° 볡μ‘λκ° μ¦κ°νλ©° μ°μ° μκ°μ΄ μ¦κ°νκ² λλ€λ λ¬Έμ κ° μλ€.
- μ¦, λ©λͺ¨λ¦¬μ μ±λ₯μ μ¬λ¦¬λ©΄ μ°μ°μ μκ°μ΄ μ¦κ°νλ€λ λ¬Έμ κ° μκ³ , λ°λλ‘ μ°μ°μ μκ°μ΄ κ°μνλ©΄ λ©λͺ¨λ¦¬μ μ±λ₯μ΄ μ€μ΄λλ λ¬Έμ κ° λ°μνλ€. μ λ΅μ μμ.