๊ฐœ๋ฐœ 23

๐Ÿ“š [CS๋ฉด์ ‘] ์›น ๋ฉด์ ‘ ์งˆ๋ฌธ [19] [Java]

1. String, Stringbuffer, Stringbuilder String์€ ๋ถˆ๋ณ€๊ฐ์ฒด(immutable)ํ•œ ๊ฐ์ฒด์ด๋‹ค. ํ•œ๋ฒˆ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋ฌธ์ž์—ด์„ ์กฐ์ž‘ํ•  ๋•Œ ๋งˆ๋‹ค ์ƒˆ๋กœ์šด String ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถˆ๋ณ€์„ฑ ๋•๋ถ„์— thread-safeํ•˜๊ณ , String๊ฐ์ฒด๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์–ด ์„ฑ๋Šฅ์ƒ ์ด์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. String a = "abc"; a = "abcd"; String b = new String("abc"); ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์—๋Š” ์ด ์ฝ”๋“œ๊ฐ€ abcd๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์‹ค์ œ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” abc๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ abcd๋ฅผ ์ €์žฅํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ abc๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฉ”..

๐Ÿ“š [CS๋ฉด์ ‘] ์›น ๋ฉด์ ‘ ์งˆ๋ฌธ [18] [์ž๋ฃŒ๊ตฌ์กฐ / ์•Œ๊ณ ๋ฆฌ์ฆ˜]

1. ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ? ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š” ๊ทœ์น™ ๋˜๋Š” ๋ชฉ์ ์— ๋งž๊ฒŒ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์ด๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ์ž๋ฃŒ๊ตฌ์กฐ์— ์Œ“์ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•ด ์–ด๋– ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๋™์ž‘๋“ค์˜ ๋ชจ์ž„์ด๋‹ค. 2. Array [ ๋ฐฐ์—ด ] ์™€ LinkedList [ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ] Array ๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, ๊ณ ์ • ๊ธธ์ด์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ˆœ์„œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ์˜๋ฏธํ•˜๋Š” Index๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, Index๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” Random Access๋ฅผ ์ง€์›ํ•œ๋‹ค. Index๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ์ƒ‰์ธํ•˜๋ฉด O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์†Œ์š”๋œ๋‹ค. ํ•˜์ง€๋งŒ, ์ค‘๊ฐ„์— ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ฉด O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ๊ณ ์ •๊ธธ์ด์™€ ๋Š๋ฆฐ ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์„ ..