Home > Archive > DataStructure > πŸ“¦[DataStructure] λ¬Έμžμ—΄

πŸ“¦[DataStructure] λ¬Έμžμ—΄
DataStructure

λ¬Έμžμ—΄(String) 은 μ’…μ’… νŠΉμˆ˜ν•œ μ’…λ₯˜μ˜ λ°°μ—΄λ‘œ 생각할 수 μžˆλŠ”, μˆœμ„œκ°€ μ§€μ •λœ 문자의 λ¦¬μŠ€νŠΈλ‹€.

λ¬Έμžμ—΄μ˜ 각 μΉΈμ—λŠ” 문자, 숫자, 기호, 곡뱁 λ˜λŠ” μ œν•œλœ 특수 기호 쀑 ν•˜λ‚˜κ°€ ν¬ν•¨λ©λ‹ˆλ‹€.

  • λ§ˆμ§€λ§‰ 칸에 μžˆλŠ” 특수 기호 /λŠ” μ’…μ’… λ¬Έμžμ—΄μ˜ 끝을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

인덱슀λ₯Ό μ‚¬μš©ν•΄ λ¬Έμžμ—΄μ˜ λ¬Έμžμ— 직접 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

일뢀 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œλŠ” λ¬Έμžμ—΄μ„ κ·Έλƒ₯ 문자 λ°°μ—΄λ‘œ 직접 κ΅¬ν˜„ν•©λ‹ˆλ‹€.

λͺ‡λͺ‡ λ‹€λ₯Έ μ–Έμ–΄μ—μ„œλŠ” λ¬Έμžμ—΄μ΄ 객체일 수 있으며, λ¬Έμžμ—΄ ν΄λž˜μŠ€λŠ” 문자λ₯Ό λ‹΄κ³  μžˆλŠ” λ°°μ—΄μ΄λ‚˜ λ‹€λ₯Έ 자료 ꡬ쑰λ₯Ό 감싼 래퍼(wrapper) 클래슀 역할을 ν•©λ‹ˆλ‹€.

  • λ¬Έμžμ—΄ 래퍼 ν¬λž˜μŠ€λŠ” λ¬Έμžμ—΄μ˜ 크기λ₯Ό λ™μ μœΌλ‘œ μ‘°μ •ν•˜κ±°λ‚˜ λΆ€λΆ„ λ¬Έμžμ—΄μ„ νƒμƒ‰ν•˜λŠ” λ“± μΆ”κ°€ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
    • 두 경우 λͺ¨λ‘ 일반 λ°°μ—΄κ³Ό μœ μ‚¬ν•œ ꡬ쑰가 λ¬Έμž₯열에 λŒ€ν•œ μž‘μ—…μ— μ–΄λ–€ 영ν–₯을 미칠지 μƒκ°ν•΄λ³΄λŠ” 것이 μœ μš©ν•©λ‹ˆλ‹€.

컴퓨터 화면에 λ¬Έμžμ—΄μ„ ν‘œμ‹œν•  λ•ŒλŠ” λ¬Έμžμ—΄μ˜ 각 문자λ₯Ό λ°˜λ³΅ν•˜λ©΄μ„œ ν•˜λ‚˜μ”© 문자λ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€.

동등성(equality) κ²€μ‚¬λŠ” 더 ν₯λ―Έλ‘­μŠ΅λ‹ˆλ‹€.

  • ν•œ 번의 μ—°μ‚°μœΌλ‘œ 직접 비ꡐ할 수 μžˆλŠ” μ •μˆ˜μ™€ 달리, λ¬Έμžμ—΄μ€ 각 문자λ₯Ό λ°˜λ³΅ν•˜λ©΄μ„œ 비ꡐ해야 ν•©λ‹ˆλ‹€.
    • 두 λ¬Έμžμ—΄μ„ 비ꡐ할 λ•ŒλŠ” μ„œλ‘œ μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 문자λ₯Ό λ°œκ²¬ν•  λ•ŒκΉŒμ§€ 두 λ¬Έμžμ—΄μ—μ„œ 같은 μœ„μΉ˜μ— μ‘΄μž¬ν•˜λŠ” 문자λ₯Ό μ„œλ‘œ λΉ„κ΅ν•©λ‹ˆλ‹€.

μ•„λž˜μ˜ μ½”λ“œλŠ” 두 λ¬Έμžμ—΄μ˜ 동등성을 ν™•μΈν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ λ³΄μ—¬μ€λ‹ˆλ‹€.

StringEqual(String: str1, String: str2):
    IF length(str1) != length(str2):
        return False
    Integer: N = length(str1)
    Integer: i = 0
    WHILE i < N AND str1[i] == str2[i]:
        i = i + 1
    return i == N
  • μ•Œκ³ λ¦¬μ¦˜μ€ λ¨Όμ € λ¬Έμžμ—΄μ˜ 크기λ₯Ό λΉ„κ΅ν•©λ‹ˆλ‹€.
    • 길이가 λ‹€λ₯΄λ©΄ μ•Œκ³ λ¦¬μ¦˜μ€ ν•΄λ‹Ή μ‹œμ μ— μ€‘μ§€λ©λ‹ˆλ‹€.
    • 길이가 κ°™μœΌλ©΄ μ•Œκ³ λ¦¬μ¦˜μ€ 각 μœ„μΉ˜λ₯Ό λ°˜λ³΅ν•˜λ©΄μ„œ ν•΄λ‹Ή μœ„μΉ˜μ— μžˆλŠ” 두 문자λ₯Ό λΉ„κ΅ν•©λ‹ˆλ‹€.
      • μ΄λ•Œ 두 λ¬Έμžκ°€ μ„œλ‘œ μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ 루프λ₯Ό 쀑지할 수 μžˆμŠ΅λ‹ˆλ‹€.
        • λ¬Έμžμ—΄μ„ λͺ¨λ‘ λΉ„κ΅ν–ˆλŠ”λ° λΆˆμΌμΉ˜κ°€ μΌμ–΄λ‚˜μ§€ μ•Šμ•˜λ‹€λ©΄ 두 λ¬Έμžμ—΄μ„ κ°™λ‹€κ³  μ„ μ–Έν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ•„λž˜μ˜ 그림은 이 μ•Œκ³ λ¦¬μ¦˜μ΄ 두 λ¬Έμžμ—΄μ— λŒ€ν•΄ μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ λ³΄μ—¬μ€λ‹ˆλ‹€. =λŠ” 비ꡐ할 λ•Œ μ„œλ‘œ μΌμΉ˜ν•œ 문자 μŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

  • XλŠ” 졜초 뢈일치둜 인해 검사가 μ’…λ£Œλœ λ¬ΈμžμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

λ¬Έμžμ—΄ λΉ„κ΅μ—μ„œ μ΅œμ•…μ˜ 경우 계산 λΉ„μš©μ€ λ¬Έμžμ—΄μ˜ κΈΈμž‰ λΉ„λ‘€ν•΄ μ¦κ°€ν•©λ‹ˆλ‹€.

  • 두 μž‘μ€ λ¬Έμžμ—΄μ„ λΉ„κ΅ν•˜λŠ” μž‘μ—…μ—μ„œλŠ” λ¬΄μ‹œν•  수 μžˆμ§€λ§Œ, 두 κΈ΄ λ¬Έμžμ—΄μ„ λΉ„κ΅ν•˜λŠ” μž‘μ—…μ—μ„œλŠ” μ‹œκ°„μ΄ 였래 걸릴 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 예λ₯Ό λ“€μ–΄, μ–΄λ–€ μ±…μ˜ 1판과 2νŒμ„ μ²˜μŒλΆ€ν„° ν•œ κΈ€μžμ”© λΉ„κ΅ν•˜λ©΄μ„œ 두 μ±…μ˜ λ³Έλ¬Έ 문자 λ°°μ—΄μ˜ 차이λ₯Ό μ°ΎλŠ” μ§€κ²¨μš΄ 과정을 상상해볼 수 μžˆμŠ΅λ‹ˆλ‹€.
      • κ°€μž₯ 쒋은 κ²½μš°μ—λŠ” μ΄ˆκΈ°μ— μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 뢀뢄을 찾을 수 μžˆμ§€λ§Œ, μ΅œμ•…μ˜ κ²½μš°μ—λŠ” μ±…μ˜ λŒ€λΆ€λΆ„μ„ 검사해야 ν•©λ‹ˆλ‹€.

λ§Žμ€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄, 예λ₯Ό λ“€μ–΄ 파이썬과 같은 μ–Έμ–΄λŠ” 직접 비ꡐ할 수 μžˆλŠ” λ¬Έμžμ—΄ 클래슀λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

  • λ”°λΌμ„œ μœ„ μ½”λ“œμ™€ 같은 비ꡐ μ½”λ“œλ₯Ό 직접 κ΅¬ν˜„ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
    • κ·ΈλŸ¬λ‚˜ κ°„λ‹¨ν•œ 비ꡐ ν•¨μˆ˜μ˜ λ’€μ—λŠ” λͺ¨λ“  문자λ₯Ό λ°˜λ³΅ν•˜λŠ” 루프가 μžˆμŠ΅λ‹ˆλ‹€.
      • 이 μ€‘μš”ν•œ μ„ΈλΆ€ 사항을 μ΄ν•΄ν•˜μ§€ μ•ŠμœΌλ©΄ λ¬Έμžμ—΄ 비ꡐ λΉ„μš©μ„ κ³Όμ†Œν‰κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.