Array
- Two Sum (problem number 1)
- Best Time to Buy and Sell Stock (problem number 121)
- Insert Interval (problem number 57)
- Majority Element (problem number 169)
- Contains Duplicate (problem number 217)
- Move Zeroes (problem number 283)
Array
- Squares of a Sorted Array (problem number 977)
String
- Valid Palindrome (problem number 125)
- Valid Anagram (problem number 242)
- Longest Palindrome (problem number 409)
- Longest Common Prefix (problem number 14)
Math
- Roman To Integer (problem number 13)
- Palindrome Number (problem number 9)
Stack
- Valid Parentheses (problem number 20)
- Implement Queue Using Stacks (problem number 232)
- Backspace String Compare (problem number 844)
Binary
- Add Binary (problem number 67)
- Counting Bits (problem number 338)
- Number of 1 Bits (problem number 191)
Hash
- ์ ํ๋ฒํธ ๋ชฉ๋ก (problem number 42577)
problem number 121
- ์ฒซ ์ ๊ทผ์ ์ฌ๊ท์ ์ ๊ทผ์ผ๋ก ํ์ด
- ์๊ฐ ๋ณต์ก๋ O(N) ์ ํ์ฌํญ์ธ๊ฑธ ์์์ง๋ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋ O(N^2)
- ์ฌ๊ท์ ์ ๊ทผ์ผ๋ก๋ง ์๊ฐํ๋ O(N) ์๋ฃจ์ ์ด ์๊ฐ ์๋จ
- discuss ์ฐธ๊ณ ํ ์๋ก์ด ์ ๊ทผ๋ฒ ์ ์ฉ O(N)
- ์์ง ๋ฌธ์ ๋ฅผ ์ฝ์ ๋ ์ฌ๊ท๊ฐ ํ์ํ์ง ์๋์ง ๊ตฌ๋ถ ์ด๋ ค์
- solution. ์ฌ๊ท๋ฅผ ๋จผ์ ๋ ์ฌ๋ฆฌ๊ธฐ ๋ณด๋ค ์ ๋ ฅ์ ์ํํ๋ฉฐ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋จผ์ ๊ณ ๋ คํ์.
problem number 57
- 2์ฐจ์ ๋ฆฌ์คํธ โ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ณํ
- ์๋ก์ด ๋ฐฐ์ด์ end๊ฐ์ด ๋น๊ต์ค์ธ ๊ธฐ์กด ๋ฐฐ์ด start๊ฐ ๋ณด๋ค ์๋ค๋ฉด ๋ค์ ์์๋ค์ ๋ถ์ฌ์ ๋ฐํ
- ๊ธฐ์กด ๋ฐฐ์ด์ด ๋น์ด์์ ๊ฒฝ์ฐ ์๋ก์ด ๋ฐฐ์ด๋ง ๋ฐํ
problem number 217
- ์ฒซ ์ ๊ทผ์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฐฐ์ด์ ๊ฐ ์๋ฅผ ์ธ๋ฑ์ค ๋ฒํธ๋กํ๋ ์๋ก์ด ์ธ๋ฑ์ค ์์ฑ
- ์๋ก์ด ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ ๋ ฅ ๋ฐฐ์ด์ ๊ฐ ์๊ฐ ์ถํํ๋ฉด ์ฆ๊ฐ
- IndexOutOfBoundsException ๋ฐ์
- ์ ๋ ฅ์ด ์์์ผ ๊ฒฝ์ฐ
- ์ ๋ ฅ ๋ฐฐ์ด ์ค {1,2,3,100000}์ผ ๊ฒฝ์ฐ
- ์ ๋ ฅ ๋ฐฐ์ด์ด ํ๋์ผ ๊ฒฝ์ฐ
- ์ ์ค๋ฅ๋ฅผ ๋ฐฐ์ด๋ก๋ง ์ฒ๋ฆฌํ๋ ค๋ค๋ณด๋ ๊ฒฝ์ฐ์ ์๊ฐ ๋ง์์ง
- ๊ณ ๋ฏผํ๋ค solution ํ์ธ. HashSet ๊ตฌํํด ํด๊ฒฐ.
problem number 283
- ์ฒซ ์ ๊ทผ์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฐฐ์ด์ ์ํํ๋ฉฐ '0' ์์น๋ฅผ ๋ ์์๋ก ์ด๋
- ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ์์๋ ์ ๋ ฌ๋์ง ์์ ์ ๊ฐ ๋๋ค
- ๋ชจ๋ ์ด๋ ํ '0' ์ธ๋ฑ์ค ์ ๊น์ง ์ ๋ ฌ์ ํด์ฃผ์๋ค
- ํ์ง๋ง, ๋ฌธ์ ์์๋ ์ ์์๋ค์ด ์ ๋ ฌ ๋ ๊ฒ์ด ์๋๋ผ ์๋์ ์์น๋ก ๋์ด๋์ด์ผ ํ๋ค.
right answer.
[4,0,1,0,3] โ [4,1,3,0,0]
wrong answer.
[4,0,1,0,3] โ [1,3,4,0,0]
- ์ฒ์์๋ ์๋์ ์์น๋ฅผ ๊ณ ๋ คํ์ง๋ง ์ฝ๋ ์์ฑ ํ๋ค๋ณด๋ ์๋์ ์์น ์กฐ๊ฑด์ ์์ด๋ฒ๋ฆผ...
- solution ํ์ธ. '0'์ด ์๋ ์๋ฅผ ์์ผ๋ก ์ฎ๊ธด ํ
- '0'์ด ์ฑ์์ ธ์ผ ํ๋ position ์ ๊ธฐ์ตํด ํด๋น position ๋ถํฐ ๋ ๊น์ง ์ฑ์ด๋ค
problem number 125
- ASCII TABLE ํ์ฉํ๋ฉด ์คํ์๊ฐ์ ์ค์ผ ์ ์์๋ค.
problem number 242
- Unicode Character๋ ํ๊ธ, ํ์, ์ด๋ชจ์ง, ํน์๊ธฐํธ ๋ฑ์ด ํฌํจ๋๋ค.
- solution์ compare() ์ฌ์ฉ or codePoint ์ฌ์ฉ์ด ์๋ค.
- ์ฌ๊ธฐ์๋ ๊ฐ ๋ฌธ์์ codePoint ๊ฐ์ ๊ตฌํด solution์ ๋ง๋ค์๋ค.
codePoint: ์ ๋์ฝ๋์์ ๊ฐ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ๊ณ ์ ํ ๊ฐ
problem number 409
- ๋ฌธ์์ด ๊ด๋ จ ์๊ณ ๋ฆฌ๋ฌ์ Map ํด๋์ค๋ฅผ ์์ฃผ ์ฌ์ฉํ๊ฒ ๋๋ค.
- ์ง์,ํ์ ์ฐ์ฐ์ ์ํด ๋ ๋ฒ์ stream์ ๋ง๋ค์์ง๋ง ํ๋๋ก ํตํฉํ ์ ์์๋ค.
- ์ ๋ ฅ ๊ฐ์ด ๋น์ด์์ ๋, ํ๋๋ง ์์ ๋๋ฅผ ๊ณ ๋ คํ์.
- ์์ด ๋,์๋ฌธ์๋ง ์กด์ฌํ ๊ฒฝ์ฐ ASCII ์ฝ๋๋ฅผ ํ์ฉํ ์ ์๋ค.
problem number 14
- ์ฒ์ ์ ๊ทผ์ ASCII ์ฝ๋๋ฅผ ์ ์ฅํด ๋น๊ตํ๋ค. ์ด ์ ๊ทผ์ ๋น๋ ์ ํ์ธ์๋ ํจ๊ณผ์ ์ด์ง๋ง ๊ณตํต ์ ๋์ฌ ์ฐพ๊ธฐ์๋ ์ฌ๋ฐ๋ฅธ ์๋ฃจ์ ์ด ์๋๋ค.
- ๋ค์ ์๋ฃจ์ ์ pivot(๊ธฐ์ค ๋ฌธ์์ด) ํ๋๋ฅผ ์ ํ๊ณ ๊ณตํต ์ ๋์ฌ ์ฐพ๊ธฐ๋ฅผ ์๋ํ๋ค. ๊ฒฝ์ฐ์ ์๊ฐ ๋๋ฌด ๋ง์์ ธ์ ๋๋ฒ๊น ํ๋ฉฐ ์์ ํ์ง๋ง ๋์ด ๋์ง ์๋๋ค.
- ๊ฒฐ๊ตญ Solution์ ํ์ธํ๊ณ ์ ๋ ฌ๋ ๋ฌธ์์ด์ ์ฌ์ฉํ๊ฒ ๋์์ ๋ ์ฒซ๋ฒ์งธ ์์์ ๋ง์ง๋ง ์์ ๋ฌธ์์ด์ ์ ๋์ฌ๊ฐ ๊ฐ์ฅ ๊ธด ๊ณตํต ์ ๋์ฌ๊ฐ ๋๋ ๊ฒ์ ํ์ธ
- because ๋ฌธ์์ด์ ์ ๋ ฌํ๋ฉด ์ํ๋ฒณ ์ฌ์ ์์ผ๋ก ์ ๋ ฌ๋๊ธฐ ๋๋ฌธ์ด๋ค.
input array of string.
ex1. {"flower", "flow", "flight"}
ex2. {"abc","aaa"}
ex3. {"cddd","cdab","cdaa","cdba"}
after sorting the array.
after1. {"flight", "flow", "flower"}
after2. {"aaa","abc"}
after3. {"cdaa","cdab","cdba","cddd"}
ํ๊ณ .
๊ณตํต ์ ๋์ฌ๋ฅผ ์ฐพ์ ๋๋ ์ ๋ ฌ๋ ๋ฌธ์์ด์ด ๋๋ ๊ฒ์ด ์ข๋ค๋ผ๋ ์๊ฐ์ด ๋ ์ค๋ฅด์ง ์์
์์ผ๋ก ๋ฌธ์์ด ๊ด๋ จ ๋ฌธ์ ํ์ด ์ ๊ณ ๋ คํด๋ณผ ๊ฒ
- ์ ๋ ฌ ๋ ๋ฐฐ์ด์์ ๋น๊ต
- ASCII ์ฝ๋ ์ฌ์ฉ
- pivot์ ์ ํ๊ณ ๋น๊ต
- left, right ๊ฐ์ ๋น๊ต
problem number 13
- ์ฒซ ์ ๊ทผ solution ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ O(N), ์คํ ์๊ฐ 6ms
- ๋ค๋ฅธ ์ ๊ทผ solution ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ O(N), ์คํ ์๊ฐ 5ms
- ๋ณต์ก๋์ ์คํ ์๊ฐ์ ์ธก๋ฉด์ผ๋ก ๋ณด๋ฉด ํฐ ์ฐจ์ด๋ ์์
ํ๊ณ .
๋ก๋ง ์ซ์์ subtractive ๊ท์น์ ์ฐพ์ ๊ฒฝ์ฐ ์ญ์ ์ฒ๋ฆฌ์ ๋ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋ณธ ์ ์์ง๋ง ํด๋น ๋ฌธ์ ๊ฐ ์ญ์ ์ฒ๋ฆฌ๋ก ์ด๋ป๊ฒ ๊ท์น์ ์ฐพ์ ์ ์๋์ง ๋ ์ค๋ฅด์ง ์์
๋ก๋ง ์ซ์ ํจํด์ ์๋ฉด ์ญ์ ์ฒ๋ฆฌ๊ฐ ์๊ฐ๋์ง ์์์๊น ์ถ์ธก
์ญ์ ์ฒ๋ฆฌ ์ ๊ทผ solution์ผ๋ก ์์ฑํ ๋ก์ง ์ฅ์
+ ๋ฉ์๋ ํธ์ถ์ ์ ๊ฑฐ
+ Map.get() ํธ์ถ ์ ๊ฐ์
+ ์กฐ๊ฑด์ ์ด ๊ฐ๊ฒฐํด์ง
problem number 20
- ์ฒ์ ์ ๊ทผ์ input ๋ฌธ์์ด์ ๊ดํธ์ ์์๊ฐ ๋ฌด์์๋ก ์๊ฐํจ. ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์กํด์ง.
- ํ์ง๋ง, input ๋ฌธ์์ด ๊ดํธ๋ ์์๊ฐ ์กด์ฌํจ. ์ด๋ฆฐ ๊ดํธ๋ถํฐ ์ ๋ ฅ๋๊ณ ๋ซ๋ ๊ดํธ๊ฐ ์ ๋ ฅ๋๋ ค๋ฉด ํญ์ ๊ทธ ์ ๋ฌธ์์ ์์ํ๋ ์ด๋ฆฐ ๊ดํธ๊ฐ ์กด์ฌํจ.
ํ๊ณ .
๋ฌธ์ ์ง๋ฌธ์ ์ ํํ ํด์ํด์ผ ํจ.
๋ฌธ์ ์ง๋ฌธ์ ์ฌ๋ฐ๋ฅด๊ฒ ํด์ํ๊ณ ์ดํดํ์ง ๋ชปํ๋ฉด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์กํด์ง๊ณ ์ฌ๋ฐ๋ฅธ ๋ต์ ์ฐพ์ ์ ์๋ค.
Stack์ LIFO(Last-In First-Out) ๋์๋ฐฉ์์ ๊ฐ์ง๊ณ Stack ํด๋์ค๋ณด๋ค๋ ArrayDeque ํด๋์ค๊ฐ ์ฑ๋ฅ์ด ๋ ์ข์
problem number 844
- ์ฒ์ ์ ๊ทผ์ ๋ฌธ์์ด์ ์ํํ๋ฉฐ ๋ฐฑ์คํ์ด์ค๋ฅผ ์ํ
- ์ํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ต ํ ๋ฐํ
- ํ์ง๋ง, ๋ฌธ์ ํฌ์ธํฐ๋ฅผ ์ง์ ํด ๋น๊ตํ๋ ๋ฐ ๊ฒฝ์ฐ์ ์๊ฐ ๋ง์์ง
- solution ํ์ธํด๋ณด๋ Stack ์๋ฃ๊ตฌ์กฐ ์ฌ์ฉํ๋ฉด ๊ต์ฅํ ๊ฐ๋จํจ
ํ๊ณ .
Easy ๋ฌธ์ ์์ ๋ง์ ์๊ฐ์ ๋ญ๋นํ๊ณ ์๋ค๊ณ ์๊ฐํด solution ํ์ธ
Stack ์๋ฃ๊ตฌ์กฐ ์ฌ์ฉํ๋ ๊ฐ๋จํ solution์ ๋ง๋ค ์ ์์์ง๋ง ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ O(N) ์ฌ์ฉ
Follow up ํ์ธ ํ ๊ณต๊ฐ ๋ณต์ก๋ O(N) โ O(1) ๋ณ๊ฒฝ ์๋
์ฒ์์ ์ ๊ทผํ solution์ด O(1) ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ํ ์ ์๋ ๋ฐฉ๋ฒ
ํ์ง๋ง, ๋ค์ํ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ ๋ คํ๋ค๋ณด๋ ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ณ ๋ฌธ์์ด ํฌ์ธํฐ ์ง์ ์ ๋ํ ์์ด๋์ด๊ฐ ํ์ํจ
ํด๋น ๋ฌธ์ ์ ๋ง์ ์๊ฐ์ ํฌ์ํ๊ธฐ ๋ณด๋ค๋ O(1) ์ ๊ทผ ๋ฐฉ๋ฒ ํ์ธ ํ ๋ฉ์ถค
problem number 67
- ์ฒ์ ์ ๊ทผํ solution์ RuntimeError ๋ฐ์
- ๋ฌธ์์ด์ int or long ํํ๋ก ๋ณํ ํด ๊ฐ์ ์ฐพ์์ง๋ง ์๋ฃํ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ input ์กด์ฌ
- ๋ค๋ฅธ solution ์๊ฐ ์๋ ์ฌ๋ฐ๋ฅธ solution ํ์ธ
- ASCII ์ซ์๋ฅผ ์ฌ์ฉํด ๋ฒ์ ๋ฌธ์ ํด๊ฒฐ
- Decimal, Binary Form์ ๋น๊ตํ๋ฉฐ solution ์์ด๋์ด ์ป์ด๋ผ ์ ์์
ํ๊ณ .
long ์๋ฃํ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ input ์กด์ฌํ ์ง ๋ชจ๋ฆ
์ซ์ ์๋ฃํ ๋ฒ์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์ ASCII ์ฝ๋๋ฅผ ์๊ฐํ์
์ด์ง ์ Decimal, Binary Form์ ๊ณ ๋ คํ๋ ์์ด๋์ด๋ฅผ ์ฒ์ ๋ด
์ซ์๋ฅผ ๊ฐ์ง๊ณ ์ฐ์ฐํ๊ฑฐ๋ ๋ณํํ ๋ ASCII๋ฅผ ๊ณ ๋ คํด๋ณด์
์ญ์ง ์ โ ์ด์ง ์ ๋ณํ ํด์ฃผ๋ ๋ฉ์๋ Integer.toBinaryString() ์กด์ฌ
problem number 338
- ์ฒ์ ์ ๊ทผํ solution์ ์๊ฐ ๋ณต์ก๋ O(NlogN)
- ์๊ฐ ๋ณต์ก๋ O(NlogN) โ O(N) solution ํ์ธ
- ๋นํธ ์ฐ์ฐ ์ฌ์ฉ๊ณผ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ๋์ ๋ ๊ฐ์ ์ฌํ์ฉํ๋ ๋์ ํ๋ก๊ทธ๋๋ฐ(Dynamic Programming) ๊ธฐ๋ฒ ์ฌ์ฉํด ์ฝ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ณ๊ฒฝ
ํ๊ณ .
+ ์ ์ i์ ์ด์ง์ ํํ์ ์ต๋ log(i) ๊ธธ์ด๋ฅผ ๊ฐ์ง๋ค
+ ๋นํธ์ฐ์ฐ์ ๋์๋ฐฉ์๊ณผ ๋์ ๋ ๋ฐฐ์ด ๊ฐ์ ์ด๋ป๊ฒ ํ์ฉํ๋์ง๊ฐ ์ค์
๋นํธ์ฐ์ฐ ๋ฐฉ์ AND(&)
๋ ๋นํธ๊ฐ ๋ชจ๋ 1์ธ ๊ฒฝ์ฐ๋ง 1์ ๋ฐํ
101 (5)
&
100 (4)
---
100 (4)
result[5] = result[5 & 4] + 1;
result[5 & 4] = result[4];
result[5] = result[4] + 1;
result[4]์ ๋นํธ ์นด์ดํธ๋ ์ด๋ฏธ ๊ณ์ฐ๋์ด ์์ด ์ถ๊ฐ์ ์ธ ๊ณ์ฐ์ ํผํ ์ ์๋ค
์ด๋ ๊ฒ ํด์ ์๊ฐ ๋ณต์ก๋๋ฅผ O(NlogN) โ O(N) ๋ณ๊ฒฝ ๋จ
problem number 191
- ์ฒ์ ์ ๊ทผํ solution์ ์๊ฐ/๊ณต๊ฐ ๋ณต์ก๋ O(logN)
- ์ต์ ํ solution์ ํ์ธ
- ์๊ฐ์ O(h) ๊ณต๊ฐ์ O(1) ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ solution์ ๋นํธ ์ฐ์ฐ ์์ฉ
- ๋นํธ ์ฐ์ฐ์ ์ฌ์ฉํด ๊ฐ์ฅ ์ค๋ฅธ์ชฝ '1'์ ์ ๊ฑฐํ๋ฉฐ ์ค์ ๋ ๋นํธ ์๋ฅผ ๊ณ์ฐ
ํ๊ณ .
์ด์ง ํํ์ ํตํ ๋นํธ ์ ๊ณ์ฐ์ ๋นํธ ์ฐ์ฐ์ ํญ์ ๊ณ ๋ คํ์
ํด๋น ๋ฌธ์ ์์๋ ๊ณต๊ฐ ๋ณต์ก๋๋ฅผ ์์ ์๊ฐ์ผ๋ก ๋ง๋ค ์ ์์๊ณ ์๊ฐ ๋ณต์ก๋๋ '1'์ ๊ฐ์๊ฐ ์ ์ ๋ ์ฑ๋ฅ์ด ํจ์ฌ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค
