๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ฝ”๋”ฉํ…Œ์ŠคํŠธ/TIL

[LC150] Array/String - 1

by moon101 2025. 3. 16.

์ด๋ฒˆ์ฃผ๋Š” ๋ฆฌํŠธ์ฝ”๋“œ Top Interview 150 ๋ฌธ์ œ ๋ฆฌ์ŠคํŠธ์—์„œ Array/String ๋ฌธ์ œ 5๊ฐœ๋ฅผ ํ’€์—ˆ๋‹ค.

 

โœ… Merge Sorted Array

๋‚œ์ด๋„: โ˜…โ˜…

์ด๋ฏธ ๋ฐฐ์—ด์ด ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Two pointer ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ํŠน์ด์ ์€ nums1 ๋ฐฐ์—ด์— ์ •๋ ฌ๋œ ์š”์†Œ๋ฅผ ๋„ฃ์–ด์•ผ ํ•ด์„œ ๋ฐฐ์—ด ๋งจ ๋์— ์žˆ๋Š” ์š”์†Œ๋ถ€ํ„ฐ ๋น„๊ตํ•ด์„œ ์ฑ„์›Œ๋„ฃ์œผ๋ฉด ๋œ๋‹ค. Merge sort๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ.

 

โœ… Remove Element

๋‚œ์ด๋„: โ˜…โ˜…โ˜…โ˜…โ˜…

์ด ๋ฌธ์ œ๋Š” ์ง„์งœ easy ๋ ˆ๋ฒจ์ธ๋ฐ ์‰ฝ๊ฒŒ ์ƒ๊ฐ์„ ๋ชปํ•ด์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ํ’€๋ ค๊ณ  ํ–ˆ๋‹ค. start, end๋กœ start๋Š” ์กฐ๊ฑด์— ๋งž๋Š” ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์œ„์น˜๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ณ  end๋Š” ์กฐ๊ฑด์— ๋งž๋Š” ์š”์†Œ๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹์ด์˜€๋Š”๋ฐ ๋˜ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์— ๋ง‰ํ˜€์„œ (์กฐ๊ฑด ์ฒดํฌํ•˜๋Š” ๋ถ€๋ถ„์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋“ค์–ด๊ฐ) ํ˜ผ์ž ๊ตฌํ˜„์€ ๋ชปํ•˜๊ณ  ๊ฒฐ๊ตญ ์†”๋ฃจ์…˜์„ ์ฐพ์•„๋ด„. 

๋‚ด๊ฐ€ ์›๋ž˜ ์ƒ๊ฐํ•œ ๋กœ์ง

 

์˜ˆ๋ฅผ ๋“ค์–ด, nums = [3, 2, 2, 3], val = 3์ด input์œผ๋กœ ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ start์™€ end์˜ ์œ„์น˜๋Š” ๊ฐ๊ฐ ์‹œ์ž‘๊ณผ ๋์„ ๊ฐ€๋ฅดํ‚จ๋‹ค.

๋งจ ์ฒ˜์Œ start์™€ end์˜ ์œ„์น˜

 

start์™€ end์˜ ์ด๋™๋ฐฉํ–ฅ

 

while(start <= end) ์กฐ๊ฑด์€ start๊ฐ€ end๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๊ฒฝ์šฐ ๊ณ„์† ๋ฐ˜๋ณต๋œ๋‹ค. 0๋ฒˆ์งธ ์œ„์น˜์—์„œ ์‹œ์ž‘ํ•œ start๊ฐ€ end๋ณด๋‹ค ๋” ์ปค์งˆ ๊ฒฝ์šฐ ์ฆ‰ start์™€ end๊ฐ€ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํƒ์ƒ‰์„ ์™„๋ฃŒํ–ˆ์„ ๋•Œ while๋ฌธ์ด ์ข…๋ฃŒ๋œ๋‹ค.

 

start ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฅด์น˜๋Š” ์š”์†Œ๊ฐ€ ์ฃผ์–ด์ง„ val๊ณผ ๊ฐ™์ง€ ์•Š์œผ๋ฉด ๊ณ„์† ํ•œ์นธ์”ฉ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ while๋ฌธ์ด ์ข…๋ฃŒ๋์„ ๋•Œ start๋Š” val๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๊ณ  ์ด start์˜ ์œ„์น˜๋Š” val๊ณผ ๋‹ค๋ฅธ, remove ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ž๋ฆฌ์ด๋‹ค.

 

end ํฌ์ธํ„ฐ๋Š” ํ•œ์นธ์”ฉ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ val๊ณผ ๊ฐ™์ง€ ์•Š์€ ์š”์†Œ๊ฐ€ ์žˆ๋Š” ์œ„์น˜์—์„œ ๋ฉˆ์ถ˜๋‹ค. 

 

while๋ฌธ์ด ๋‹ค ๋๋‚ฌ์„ ๋•Œ start์™€ end์˜ ์œ„์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

 

start๋Š” remove ํ•ด์•ผ๋  ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๊ณ  end๋Š” ํ•„์š”ํ•œ ์š”์†Œ์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์„ swap ํ•ด์ค€๋‹ค. 

 

์—ฌ๊ธฐ๊นŒ์ง€ ์‹คํ–‰๋˜๋ฉด val๊ณผ ๊ฐ™์€ ๊ฐ’์ธ 3๊ณผ val์ด ์•„๋‹Œ 2์˜ ๊ฐ’์˜ ์œ„์น˜๊ฐ€ ์„œ๋กœ ๋ฐ”๋€Œ๊ณ  start์™€ end๋„ ํ•œ์นธ์‹ ์ด๋™ํ•ด์„œ ์„œ๋กœ ๊ฐ™์€ ๊ณณ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. while๋ฌธ์˜ ์ข…๋ฃŒ ์กฐ๊ฑด์ด start <= end์ด๊ธฐ ๋•Œ๋ฌธ์— start == end์ผ ๊ฒฝ์šฐ์—๋„ ๋™์ž‘ํ•œ๋‹ค. 

 

์—ฌ๊ธฐ์„œ start ์กฐ๊ฑด์˜ while๋ฌธ์ด ์‹คํ–‰๋˜๊ณ  ๋‚˜๋ฉด start <= end ์กฐ๊ฑด์ด false๊ฐ€ ๋จ์œผ๋กœ end์˜ while๋ฌธ์€ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  start์™€ end์˜ ์œ„์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

start๋Š” remove ํ•ด์•ผ ๋  ๊ฐ’, end๋Š” remove ํ•˜์ง€ ์•Š์•„์•ผ ํ•  ๊ฐ’์„ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋‘ ๊ฐ’์„ swap ํ•ด์ฃผ์—ˆ์ง€๋งŒ ๋งŒ์•ฝ start๊ฐ€ end๋ณด๋‹ค ๊ฐ™์œผ๋ฉด ๋ถˆํ•„์š”ํ•œ swap์„ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ณ , start๊ฐ€ end๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์ด๋ฏธ ์ดˆ๋ก์ƒ‰ ๋ถ€๋ถ„ nums[0...start) ๊นŒ์ง€๋Š” val ๊ฐ’์ด ์ œ๊ฑฐ๋œ ์š”์†Œ๋“ค๋งŒ ๋“ค์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— swap์„ ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. 

start index-1๊นŒ์ง€๋Š” val๊ฐ’์ด ๋“ค์–ด์žˆ์ง€ ์•Š๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” start ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉด ์ด๋ ‡๊ฒŒ ํ’€ ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ while๋ฌธ ์•ˆ์˜ ๊ฐ๊ฐ์˜ while๋ฌธ๋„ break์กฐ๊ฑด ๋ฐ index๋ฒ”์œ„ ์ฒดํฌํ•˜๋Š” ๋กœ์ง์ด ํ•„์š”ํ•˜๊ณ  swap๋„ start < end์ผ๋•Œ๋งŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ์กฐ๊ฑด์„ ๋„ฃ์–ด์ค˜์•ผ ํ–ˆ๋Š”๋ฐ ์ด๋Ÿฌํ•œ ์กฐ๊ฑด๋“ค์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์› ๋‹ค. 

 

 

 

์ด๊ฑด ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•œ๋ฐ start๋Š” ์•ž์—์„œ end๋Š” ๋’ค์—์„œ๋ถ€ํ„ฐ ํ™•์ธํ•˜๋Š”๋ฐ start์˜ ๊ฐ’์ด val์ผ ๊ฒฝ์šฐ ์ด ๊ฐ’์€ remove๋˜์–ด์•ผ ํ•˜๋‹ˆ๊นŒ ๋’ค์—์„œ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ  ํ•œ์นธ์”ฉ ์•ž์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋‹ค์Œ start๊ฐ’์ด val์ด ์•„๋‹ˆ๋ฉด ํ•œ์นธ์”ฉ ์˜†์œผ๋กœ ์ด๋™ํ•œ๋‹ค. 

 

์ด ๋ฌธ์ œ๋Š” while๋ฌธ๋ณด๋‹ค for๋ฌธ์œผ๋กœ ๊ตฌํ˜„๋œ ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ์ง๊ด€์ ์ด๋‹ค. 

 

for๋ฌธ์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด i๊ฐ€ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด ๊ฐ’์„ ํ™•์ธํ•˜๊ณ  index๋ณ€์ˆ˜๋กœ(val์ด ์•„๋‹Œ ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์œ„์น˜๋ฅผ ๊ธฐ๋ก) val์ด ์•„๋‹Œ ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค. ์ด ์œ ํŠœ๋ธŒ๋ฅผ ๋ณด๋ฉด ๋ฐฐ์—ด์„ ๊ทธ๋ฆผ์œผ๋กœ ๋ณด์—ฌ์ค˜์„œ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค. 

 

 

 

โœ… Remove Duplicates from Sorted Array

๋‚œ์ด๋„: โ˜…โ˜…

removeElement ๋ฌธ์ œ๋ฅผ ์ž˜ ํ’€์—ˆ์œผ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค. 

 

โœ… Remove Duplicates from Sorted Array 2

๋‚œ์ด๋„: โ˜…โ˜…

์œ„ ๋ฌธ์ œ๋ฅผ ๋ฌธ์ œ๋ฅผ ์ž˜ ํ’€์—ˆ์œผ๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค. count๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๋ฐ ๋‚˜๋Š” ๊ทธ๋ƒฅ ์ด์ „ ์š”์†Œ๋ฅผ ๋น„๊ตํ•ด์„œ ํ’ˆ.

 

โœ… Majority Element

๋‚œ์ด๋„: โ˜…โ˜…โ˜…โ˜…โ˜…

์ด ๋ฌธ์ œ๋Š” hashmap์„ ์‚ฌ์šฉํ•ด์„œ ํ’€๋ฉด ์ •๋ง ๊ฐ„๋‹จํžˆ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด์ง€๋งŒ space complexity๋ฅผ O(1)๋กœ ํ‘ธ๋Š” ๊ฑด ๋˜ ๋‹ค๋ฅธ๋ฌธ์ œ๋ผ ์ €๋ฒˆ์—๋„ O(1)์œผ๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์„ ๋ดค๋Š”๋ฐ ๋‹ค์‹œ ํ’€๋ฉด ์ƒ๊ฐ์ด ์•ˆ๋‚œ๋‹ค....

majority element๋ฅผ space O(1)์œผ๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•

 

 

 

 

 

 

 

 
 
 
 
 
 
va
 
 

๋Œ“๊ธ€