๋ฐฐ์ด์ด๋?
๊ฐ์ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์์นํด ์ธ๋ฑ์ค๋ก ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค. ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ์์ฑํ ๋ ์ ํด์ง๋ฉฐ ํ ๋ฒ ์์ฑํ๋ฉด ์ฌ์ด์ฆ๋ ๊ณ ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝํ ์ ์๋ค.
๋ง์ฝ ๋์ ๋ฐฐ์ด์ด ํ์ํ ๊ฒฝ์ฐ, ์๋ฐ์์๋ ArrayList๋ฅผ ์ฌ์ฉํ ์ ์๋ค(c++์์๋ vector).
์ฝ๋ฉํ ์คํธ ํ ๐๏ธ
๋ฐฐ์ด์ ๋์ค์ ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ํ ๋ ๊ธฐ๋ณธ์ผ๋ก ์๊ณ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด ๊ด๋ จ ์ฝ๋๋ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์์ฑํ ์ ์์ ๋งํผ ์ต์ํด์ ธ์ผ ํ๋ค. ๋ฐฐ์ด๊ด๋ จ ๋ฌธ์ ๋ ์ข ๋ฅ๋ ๋ค์ํ๊ณ ๋์ด๋๊ฐ ์ฒ์ ์ ํ๋ฉด ์๊ฐ๋ณด๋ค ์ด๋ ค์ด ๋ฌธ์ ๋ค์ด ๋ง๋ค. prefix sum, sliding window, two pointer ๊ฐ์ ๊ฐ๋ ์ ๋ฐฐ์ด ๋ฌธ์ ๋ฅผ ํ ๋ ์์๋๋ฉด ์ข๊ณ , HashMap๋ ๋ง์ด ํ์ฉํ๊ธฐ ๋๋ฌธ์ ํด์๋งต์ ๋ฉ์๋๋ฅผ ์ด๋ป๊ฒ ํ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ ์ ์๋์ง ์ ๋ฆฌํด ๋๋๊ฑธ ์ถ์ฒํ๋ค.
๋ฐฐ์ด ๋ฌธ์ ๋ฅผ ํ ๋ ์์์ผ ๋๋ ๊ฐ๋
๐ prefix sum
๐ sliding window
๐ two pointer (์ค์!!!)
HashMap ๋ฉ์๋ ํ์ฉ๋ฒ
๐ getOrDefault(Object key, V defaultValue): ํด๋น ํค์ ๋ํ ๋งคํ ๊ฐ ๋ฆฌํด. ๋งคํ๋ ๊ฐ์ด ์์ ๊ฒฝ์ฐ ๋ํดํธ๊ฐ ๋ฆฌํด
๐ containsKey(Object key): ํด๋น ํค์ ๋ํ ๋งคํ์ด ์์ ๊ฒฝ์ฐ true ๋ฆฌํด
๐ putIfAbsent(K Key, V value): ํด๋น ํค์ ๋งคํ๋ ๊ฐ์ด ์์ ๊ฒฝ์ฐ, ์ธ์๋ก ๋ค์ด์จ ๊ฐ ๋งคํ
๐ ๋งต ์๋ฃ๊ตฌ์กฐ ๋ฐ๋ณต๋ฌธ ์์ฑ ๋ฐฉ๋ฒ
IndexOutOfBoundsException ์ฃผ์
๐ ๋ฐ๋ณต๋ฌธ์ด๋ ์กฐ๊ฑด ๊ฒ์ ํ ๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ arr[i - 1] > arr[i] ๋๋ arr[i] > arr[i + 1] ์ด๋ฐ์์ผ๋ก ๋น๊ตํ๋ ๊ฒฝ์ฐ -1 ๋๋ +1์ ํ ๋ ์ธ๋ฑ์ค ๋ฒ์๋ฅผ ๋ฒ์ด ๋์ง ์๋๋ก ์ฃผ์
1์ฐจ์ -> 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ณ๊ฒฝ ์ modulo ์ฌ์ฉ๋ฐฉ๋ฒ
๐ 1์ฐจ์ ๋ฐฐ์ด์ ๊ฐ์ ์์๋๋ก 2์ฐจ์ ๋ฐฐ์ด์ ๊ฐ์ ๋ฃ๋๋ค๊ณ ํ๋ฉด ํ์ / division operator, ์ด์ % modulo operator๋ฅผ ์ฌ์ฉํด์ ์์น๋ฅผ ๊ตฌํ ์ ์๋ค. ์ด๋ ๋ถ๋ชจ๋ก๋ ์ด์ ๊ธธ์ด๊ฐ ๋ค์ด๊ฐ๋ค (์, ์ฌ์ด์ฆ๊ฐ 9์ธ 1์ฐจ์ ๋ฐฐ์ด์ 5๋ฒ์งธ ์ธ๋ฑ์ค์ ๊ฐ์ 3*3 ํฌ๊ธฐ์ 2์ฐจ์ ๋ฐฐ์ด 1ํ 2์ด์ ์์น (5 / 3 = 1, 5 % 3 = 2)
๐ row = i / m (column length)
๐ col = i % m (column length)
์ฝ๋
๋ฐฐ์ด์์ ๊ฐ swap ๋ฐฉ๋ฒ
์๋ฅผ ๋ค์ด ์๋ ์ฌ์ง์ฒ๋ผ ๋ฐฐ์ด์ด ์๋ค๊ณ ํ๋ฉด

ํน์ ์ธ๋ฑ์ค ๊ฐ์ ์์น๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฝ๋๋ ์๋์ฒ๋ผ ์์ฑํ๋ค.

temp ๋ณ์์ arr[num1]์ ๋ฃ์ผ๋ฉด arr[num1]์ ๋ฐ๊ฟ ๊ฐ(arr[num2])์ ๋ฃ๊ณ ๊ทธ๋ผ arr[num2]์ arr[num1]๊ฐ์ ๋ฃ์ด์ค์ผ ํ๋๋ฐ, arr[num1]์๋ ์ง๊ธ arr[num2] ๊ฐ์ด ๋ค์ด๊ฐ ์์ผ๋๊น ์๋์ arr[num1] ๊ฐ์ด ์ ์ฅ๋์ด ์๋ temp ๊ฐ์ arr[num2]์ ๋ฃ์ด์ผ ๋๋๊ตฌ๋ ์ด๋ฐ์์ผ๋ก ์๊ฐํ๋ฉด์ ์ค์ ์ ๋๋ ๋ฐ๋ณต๋ฌธ ์์ฑํ๋ฏ์ด ์ต์ํด์ ธ์ผ ํ๋ค.

๋ฐฐ์ด์ ๋ฒ์๋ฅผ ์ง์ ํด์ reverse ํ๋ ๋ฐฉ๋ฒ
๋ฐฐ์ด์ ์์๋ฅผ ๋ฐ๊ฟ์ผ ํ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด ๋ฆฌํธ์ฝ๋์ next permutation ๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋ฉด ๋ฐฐ์ด์ ํน์ ๋ถ๋ถ์ ๋ค์ง์ด์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋๋ ๋ฉ์๋์ ๋ฐฐ์ด์ ๋ฒ์, ์์๊ณผ ๋ ์ธ๋ฑ์ค ๊ฐ์ ๋ฃ์ด์ ๋ฉ์๋๋ฅผ ์์ฑํ๋ค.


๋ฐฐ์ด ๋ฌธ์ ๋ฆฌ์คํธ
LeetCode
73. Set Matrix Zeros (๊ณต๊ฐ๋ณต์ก๋๋ฅผ O(1)๋ก ํธ๋ ๋ฐฉ๋ฒ. ์ฒซ๋ฒ์งธ ํ๊ณผ ์ด์ ์ฌ์ฉํด์ '0'์ด ์๋์ง flag๋ก ๊ธฐ๋ก. ๊ฒน์น๋ ๋ถ๋ถ(0, 0)์ boolean ๋ณ์ 2๊ฐ isFirstRow, isFirstCol๋ฅผ ์ ์ธํด์ ์ฒดํฌ)
31. Next Permutation (์ ์ผ ๊ธด ์ ๋์ฌ๋ฅผ ์ฐพ์ ๋ค ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ฐพ์์ swap. ๋๋จธ์ง ์ซ์๋ ์ ๋ ฌํจ)
53. Maximum Subarray (Kadane ์๊ณ ๋ฆฌ์ฆ. ๋ง์ด๋์ค ์ซ์๋ฅผ sum์ ๋ํ ๊ฒฝ์ฐ sum์ ๋ ์๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ sum์ด '0'๊ณผ ๊ฐ๊ฑฐ๋ ์์ผ๋ฉด ์๋ก ์์)
75. Sort Colors (Dutch National Flag ์๊ณ ๋ฆฌ์ฆ. 3๊ฐ์ ํฌ์ธํฐ ํ์ฉ. 3๊ฐ์ ๊ฐ์ ํํฐ์ ์ ๋ง๋ค์ด์ ์ ๋ ฌ)
121. Best Time to Buy and Sell Stock
48. Rotage Image (์๊ณ๋ฐฉํฅ์ผ๋ก 90๋ ํ์ ํ ๋งคํธ๋ฆญ์ค์ ์ด์ ๊ธฐ์กด์ ํ์ ์ญ์๊ณผ ๊ฐ์. ๋งคํธ๋ฆญ์ค์ ํ์ ์ด๋ก ๋ฐ๊พธ๊ณ ์ด์ ํ์ผ๋ก ๋ฐ๊พผ ๋ค ํ์ reverse. ํ์ ์ด๋ก ๋ฐ๊ฟ ๋ ๋ฐ๋ณต๋ฌธ ์กฐ๊ฑด ์ฃผ์)
56. Merge Intervals (ํ๋ฒ๋ง ์ํํ๋ฉด์ ๋ค์ ์ธํฐ๋ฒ์ ์์์ด ํ์ฌ ์ธํฐ๋ฒ์์ ์ํ ๊ฒฝ์ฐ ํ์ฌ ๋น๊ตํ๋ ์ธํฐ๋ฒ ์ข ๋ฃ๊ฐ ์ ๋ฐ์ดํธ โ โ โ )
287. Find the Duplicate Number (๋งํฌ๋ ๋ฆฌ์คํธ์ slow/fast ํฌ์ธํฐ ๊ฐ๋ ์ ์์์ผ ํ ์ ์์ โ โ โ )
74. Search a 2D Matrix (2์ฐจ์ ๋ฐฐ์ด์ ๊ฐ์์ 1์ฐจ์ ๋ฐฐ์ด๋ก ์๊ฐํด์ ํฌํฌ์ธํฐ ์ฌ์ฉ. )
50. Pow(x, n) (Binary Exponentiation ์ํ ๊ฐ๋ ์๋ฉด ์ข์ โ โ โ )
169. Majority Element (Moore's Voting ์๊ณ ๋ฆฌ์ฆ. 2๊ฐ์ ๋ณ์, count, elementToCheck๋ฅผ ์ ์ธํด์ ๋ง์ฝ count๊ฐ '0'์ด๋ฉด ํ์ฌ ๊ฐ์ elementToCheck์ ์ ์ฅ. ๋ง์ฝ ํ์ฌ ๊ฐ๊ณผ elementToCheck์ ๊ฐ์ผ๋ฉด count++, ์๋๋ฉด count--)
222. Majority Element 2 (Moore's Voting ์๊ณ ๋ฆฌ์ฆ. 4๊ฐ์ ๋ณ์๋ฅผ ์ ์ธํด์ ๋ฌธ์ ๋ฅผ ํ)
62. Unique Paths (๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ)
493. Reverse Pairs (merge sort ์ค๊ฐ์ ํ์ ๋ก์ง ์ถ๊ฐโ โ โ โ )
18. 4Sum (์ ๋ ฌํ ๋ค์์ i, j ๊ณ ์ ํ k, l์ ๋ํด ํฌํฌ์ธํฐ ์ฌ์ฉ)
128. Longest Consecutive Sequence (set ์๋ฃ๊ตฌ์กฐ ํ์ฉ. num - 1๋ฅผ ํ์ธํด์ ๋ง์ฝ ํ์ฌ ๋น๊ตํ๋ ์ซ์๋ณด๋ค ์์ ์ซ์๊ฐ ์์ผ๋ฉด ๋ค์ ๊ฐ ํ์ธ. ์์ผ๋ฉด ์ฐ์๋ ์ซ์ ํ์ธ)
3. Longest Substring Without Repeating Characters
238. Product of Array Except Self (prefix, suffix sum ๊ฐ๋ ํ์ฉ)
3070. Count Submatrices with Top-Left Element and Sum Less Than k (submatrices๋ฅผ ๊ตฌํด์ผ ํด์ queue๋ฅผ ํ์ฉํ bfs๋ก๋ ํ ์ ์๊ณ , prefix sum ํ์ฉ ํ์)
42. Trapping Rain Water (prefix max/suffix max๋ฅผ ์ฐพ์์ ํ ์๋ ์์ง๋ง ํฌํฌ์ธํฐ ๋๋ monotonic stack ๊ฐ๋ ์ ํ์ฉํด์ ํ ์๋ ์์)
ํ๋ก๊ทธ๋๋จธ์ค
์ฐธ๊ณ ์๋ฃ
๋์: ์ฝ๋ฉ ์ธํฐ๋ทฐ ์์ ๋ถ์
๋์: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ํ์ด ์ ๋ต (์๋ฐํธ)
https://github.com/jwasham/coding-interview-university?tab=readme-ov-file#arrays
https://takeuforward.org/interviews/strivers-sde-sheet-top-coding-interview-problems
'์ฝ๋ฉํ ์คํธ > ์๊ณ ๋ฆฌ์ฆ&์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3. Linked List (0) | 2024.03.09 |
---|
๋๊ธ