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ํŒ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•œ ๊ธ€์ž์”ฉ ๋น„๊ตํ•˜๋ฉด์„œ ๋‘ ์ฑ…์˜ ๋ณธ๋ฌธ ๋ฌธ์ž ๋ฐฐ์—ด์˜ ์ฐจ์ด๋ฅผ ์ฐพ๋Š” ์ง€๊ฒจ์šด ๊ณผ์ •์„ ์ƒ์ƒํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ๊ฐ€์žฅ ์ข‹์€ ๊ฒฝ์šฐ์—๋Š” ์ดˆ๊ธฐ์— ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์„ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” ์ฑ…์˜ ๋Œ€๋ถ€๋ถ„์„ ๊ฒ€์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ด์ฌ๊ณผ ๊ฐ™์€ ์–ธ์–ด๋Š” ์ง์ ‘ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ ์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋น„๊ต ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    • ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ„๋‹จํ•œ ๋น„๊ต ํ•จ์ˆ˜์˜ ๋’ค์—๋Š” ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฃจํ”„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ์ด ์ค‘์š”ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ž์—ด ๋น„๊ต ๋น„์šฉ์„ ๊ณผ์†Œํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.