Basic Data Structure and Algorithm 01 - Gomserker/Data-Structure-and-Algorithm GitHub Wiki

01. μžλ£Œκ΅¬μ‘°λž€?

데이터 λ‹¨μœ„μ™€ 데이터 자체 μ‚¬μ΄μ˜ 물리적 λ˜λŠ” 논리적인 관계
자료λ₯Ό 효율적으둜 μ΄μš©ν•  수 μžˆλ„λ‘ 컴퓨터에 μ €μž₯ν•˜λŠ” 방법을 λœ»ν•¨.

02. λ°°μ—΄(Array)

λ°°μ—΄μ΄λž€?

//ν•™μƒλ“€μ˜ μ‹œν—˜ 성적을 κ΄€λ¦¬ν• λ•Œ
int mike;
int thomas;
int jake;
...

ν•™μƒμ˜ μˆ«μžκ°€ 적을땐 μ΄λ ‡κ²Œ 학생 ν•œ λͺ…λ§ˆλ‹€ λ³€μˆ˜λ₯Ό μ„ μ–Έν•΄μ„œ 관리할 수 μžˆμ§€λ§Œ, ν•™μƒμˆ˜κ°€ λ§Žμ„λ• ꡉμž₯히 λ²ˆκ±°λ‘œμ›Œμ§„λ‹€.
μ΄λŸ΄λ•, ν•™λ²ˆ λ˜λŠ” μΆœμ„λ²ˆν˜Έλ‘œ 쀄 μ„Έμš°λ“―μ΄ 'λͺ‡ 번째 학생' 이라고 μ§€μ •ν•˜λ©΄ μž‘μ—…μ΄ νŽΈλ¦¬ν•΄μ§„λ‹€. "λ°°μ—΄(Array)"은 λ°”λ‘œ μ΄λŸ΄λ•Œ μ‚¬μš©ν•˜λŠ” κ°„λ‹¨ν•œ μžλ£Œκ΅¬μ‘°μ΄λ‹€.
λ˜ν•œ, 같은 μžλ£Œν˜•μ˜ λ³€μˆ˜λ‘œ 이루어진 ꡬ성 μš”μ†Œ(component)κ°€ 직선 λͺ¨μ–‘μœΌλ‘œ μ—°μ†ν•˜μ—¬ 쀄지어 μžˆλŠ” ꡬ쑰이닀.

int[] student;
int student[];

배열은 μœ„μ™€ 같이 μ„ μ–Έν•  수 μžˆλŠ”λ°, intν˜•μΈ ArrayλΌλŠ” 점을 λͺ…ν™•ν•˜κ²Œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€λŠ” μ μ—μ„œ μ „μžλ₯Ό 훨씬 많이 μ‚¬μš©ν•œλ‹€.
그리고 ꡬ성 μš”μ†Œμ˜ 갯수λ₯Ό μ„ μ–Έν•˜λ €λ©΄ μ•„λž˜μ™€ 같이 λ‚˜νƒ€λ‚Έλ‹€.

a = new int[5];

μœ„ λ°•μŠ€μ˜ μ˜λ―ΈλŠ”, λ³€μˆ˜ aλŠ” 길이가 5인 배열을 μ°Έμ‘°ν•œλ‹€λŠ” λœ»μ΄λ‹€.
μ•„λž˜ ν”„λ‘œκ·Έλž¨μ„ 톡해 λ°°μ—΄μ˜ νŠΉμ„±μ„ 확인할 수 μžˆλ‹€.

class IntArray {
  public static void main(String[] args) {
   int[] a = new int[5]; // μ •μˆ˜ν˜• λ°°μ—΄ aλ₯Ό μ„ μ–Έν•˜κ³  a의 0~4κΉŒμ§€ 5개의 인덱슀λ₯Ό μ§€λ‹Œ λ°°μ—΄μž„μ„ μ„ μ–Έν•œλ‹€.

   a[1] = 37; // a[1]에 37을 λŒ€μž…
   a[2] = 51;
   a[4] = a[1] * 2; // a[1]에 2λ₯Ό κ³±ν•œ 값을 a[4]에 λŒ€μž…ν•œλ‹€.

   for (int i = 0; i < a.length; i++) // a[0]λΆ€ν„° a[4]κΉŒμ§€μ˜ 값을 좜λ ₯ν•œλ‹€.
    System.out.println("a[" + i + "] = " + a[i]);
  }
}

result

a[0] = 0 //값을 λŒ€μž…ν•˜μ§€ μ•Šμ€ λ°°μ—΄μ˜ componentλŠ” μžλ™μœΌλ‘œ 0으둜 μ΄ˆκΈ°ν™”λœλ‹€.
a[1] = 37
a[2] = 51
a[3] = 0
a[4] = 74 // a[1] * 2

λ°°μ—΄μ˜ μ„ μ–Έκ³Ό λ™μ‹œμ— component value μ΄ˆκΈ°ν™”

값을 λŒ€μž…ν•˜μ§€ μ•Šμ€ λ°°μ—΄μ˜ componentλŠ” μžλ™μœΌλ‘œ 0으둜 μ΄ˆκΈ°ν™” λ˜μ§€λ§Œ, λ°°μ—΄ μ΄ˆκΈ°ν™”λ₯Ό μ‚¬μš©ν•˜λ©΄ λ°°μ—΄μ˜ 생성과 λ™μ‹œμ— 각 component의 μ΄ˆκΈ°ν™”κ°€ κ°€λŠ₯ν•˜λ‹€.


class IntArrayInit {
 public static void main(String[] args) {
   int[] a = {1, 2, 3, 4, 5};

   for (int i = 0; i < a.length; i++)
    System.out.println("a[" + i + "] = " + a[i]);
 }
}

result

a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5
int[] a = new int[] {1, 2, 3, 4, 5}

μœ„μ™€ 같이 new μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄ μ’€ 더 λͺ…ν™•ν•˜κ²Œ μ„ μ–Έν•  수 μžˆλ‹€.