๋ชฉ์ฐจ
1. ๋ฒ๋ธ ์ ๋ ฌ
- ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ์ ๋ ฌ๋์ง ์์ ๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋, ์ด๋ป๊ฒ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ์ ์์๊น?
- 2 1 3 5
- ์์ ๊ฐ์ ๋ฐฐ์ด์ด ์์ ๋, ํฌ์ธํฐ 1์ 2๋ฅผ, ํฌ์ธํฐ 2๋ 1์ ๊ฐ๋ฆฌํจ๋ค.
- ํฌ์ธํฐ 1 > ํฌ์ธํฐ 2 ์ผ ๋, ๋ ํญ๋ชฉ์ ๊ตํํ๋ค.
- ํฌ์ธํฐ๋ค์ ํ ์นธ์ฉ ์ด๋ํ๋ฉฐ ๋ ํญ๋ชฉ์ ๋น๊ตํ๊ณ ํ์์ ๋ ํญ๋ชฉ์ ๊ตํํ๋ค.
- ์ด๋ ๊ฒ ํ ๋ฒ ๋ฐฐ์ด ์ ์ฒด๋ฅผ pass throughํ๊ณ ๋๋ฉด, ๋ค์ ๋งจ ์ผ์ชฝ์ผ๋ก ํฌ์ธํฐ๋ฅผ ์ฎ๊ฒจ ๊ตํ์ด ์ผ์ด๋์ง ์์ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
2. ๋ฒ๋ธ ์ ๋ ฌ์ ๊ตฌํ
- ์๋ต
- ํ์ด์ฌ ์ฝ๋ ์์๋ค
3. ๋ฒ๋ธ ์ ๋ ฌ์ ํจ์จ์ฑ
- ๋ฒ๋ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์์ ์ค์ํ ๋จ๊ณ๋ ๋น๊ต์ ๊ตํ์ด๋ค.
- ๋น๊ต: ๋ฐฐ์ด ํฌ๊ธฐ๊ฐ N์ด๋ผ๊ณ ํ์ ๋, ๋น๊ต๋ N - 1 + N - 2 + N - 3 + โฆ + 1๋ฒ ์คํ๋๋ค.
- ๊ตํ: ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๋ฐฐ์ด(์ต์ ์ ์๋๋ฆฌ์ค)์์ ๊ตํ์ ์คํ ํ์๋ฅผ ์ ๋๋ ๋น๊ตํ ๋๋ง๋ค ๊ตํ์ ์คํํด์ผ ํ๋ค. ์ฆ, ๋น๊ต์ ์คํ ํ์์ ๊ฐ๋ค.
- ์ต์ ์ ์๋๋ฆฌ์ค์์ ๋น๊ต์ ๊ตํ์ ํ์๋ ๋๋ต N^2์ด๋ค.
- O(N^2)
4. ์ด์ฐจ ๋ฌธ์
- O(N^2) ์๊ณ ๋ฆฌ์ฆ์ O(N) ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋์ฒดํ ์ ์์๊น?
- ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ์ค๋ณต๋๋ ์ซ์๊ฐ ๋ค์ด ์๋์ง ํ์ธํ๋ ํจ์
- for(i in 0 until list.size){ for(j in i + 1 until list.size){ if(list[i] == list[j]){ return true } } } return false
- ์ ์ฝ๋๋ O(N^2) ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
5. ์ ํ ํด๊ฒฐ๋ฒ
var existingNum = IntArray()
for (i in 0 until arr.size){
if(existingNum[arr[i]] == 1)
return true
else
existingNum[arr[i]] = 1
}
return false
- existingNum์ด๋ผ๋ ๋ฐฐ์ด์ ์ค๋ณต ์ฌ๋ถ๋ฅผ ํ์ํ๊ฒ ํ๋ค.
- ์ ์ฝ๋๋ O(N) ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
6. ๋ง๋ฌด๋ฆฌ
- ๋น ์ค ํ๊ธฐ๋ฒ์ ๋๋ถ๋ถ์ ์๊ณ ๋ฆฌ์ฆ์ ์๋๋ฅผ ๋น๊ตํ๊ณ ํ๋ณํ ์ ์๋ค.
- ๊ทธ๋ฌ๋ ๋น ์ค ํ๊ธฐ๋ฒ์ผ๋ก ํ๋ณ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ค.
- 5์ฅ์์๋ ๋น ์ค ํ๊ธฐ๋ฒ์ผ๋ก๋ ์ ์๋ฏธํ ์ฐจ์ด๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ์ด๋ป๊ฒ ํ๋จํ๋์ง ์ดํด๋ณธ๋ค.
'๐๏ธ ์ฑ & ๊ฐ์ ์ ๋ฆฌ > ๐๏ธ ๋๊ตฌ๋ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
6์ฅ ๊ธ์ ์ ์ธ ์๋๋ฆฌ์ค ์ต์ ํ (0) | 2022.11.04 |
---|---|
5์ฅ ๋น ์ค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์๋ ์ฝ๋ ์ต์ ํ (0) | 2022.11.03 |
3์ฅ ๋น ์ค ํ๊ธฐ๋ฒ (0) | 2022.10.29 |
2์ฅ ์๊ณ ๋ฆฌ์ฆ์ด ์ค์ํ ๊น๋ญ (1) | 2022.10.29 |
1์ฅ ์๋ฃ๊ตฌ์กฐ๊ฐ ์ค์ํ ๊น๋ญ (0) | 2022.10.29 |
1. ๋ฒ๋ธ ์ ๋ ฌ
- ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ์ ๋ ฌ๋์ง ์์ ๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋, ์ด๋ป๊ฒ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ์ ์์๊น?
- 2 1 3 5
- ์์ ๊ฐ์ ๋ฐฐ์ด์ด ์์ ๋, ํฌ์ธํฐ 1์ 2๋ฅผ, ํฌ์ธํฐ 2๋ 1์ ๊ฐ๋ฆฌํจ๋ค.
- ํฌ์ธํฐ 1 > ํฌ์ธํฐ 2 ์ผ ๋, ๋ ํญ๋ชฉ์ ๊ตํํ๋ค.
- ํฌ์ธํฐ๋ค์ ํ ์นธ์ฉ ์ด๋ํ๋ฉฐ ๋ ํญ๋ชฉ์ ๋น๊ตํ๊ณ ํ์์ ๋ ํญ๋ชฉ์ ๊ตํํ๋ค.
- ์ด๋ ๊ฒ ํ ๋ฒ ๋ฐฐ์ด ์ ์ฒด๋ฅผ pass throughํ๊ณ ๋๋ฉด, ๋ค์ ๋งจ ์ผ์ชฝ์ผ๋ก ํฌ์ธํฐ๋ฅผ ์ฎ๊ฒจ ๊ตํ์ด ์ผ์ด๋์ง ์์ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
2. ๋ฒ๋ธ ์ ๋ ฌ์ ๊ตฌํ
- ์๋ต
- ํ์ด์ฌ ์ฝ๋ ์์๋ค
3. ๋ฒ๋ธ ์ ๋ ฌ์ ํจ์จ์ฑ
- ๋ฒ๋ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์์ ์ค์ํ ๋จ๊ณ๋ ๋น๊ต์ ๊ตํ์ด๋ค.
- ๋น๊ต: ๋ฐฐ์ด ํฌ๊ธฐ๊ฐ N์ด๋ผ๊ณ ํ์ ๋, ๋น๊ต๋ N - 1 + N - 2 + N - 3 + โฆ + 1๋ฒ ์คํ๋๋ค.
- ๊ตํ: ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๋ฐฐ์ด(์ต์ ์ ์๋๋ฆฌ์ค)์์ ๊ตํ์ ์คํ ํ์๋ฅผ ์ ๋๋ ๋น๊ตํ ๋๋ง๋ค ๊ตํ์ ์คํํด์ผ ํ๋ค. ์ฆ, ๋น๊ต์ ์คํ ํ์์ ๊ฐ๋ค.
- ์ต์ ์ ์๋๋ฆฌ์ค์์ ๋น๊ต์ ๊ตํ์ ํ์๋ ๋๋ต N^2์ด๋ค.
- O(N^2)
4. ์ด์ฐจ ๋ฌธ์
- O(N^2) ์๊ณ ๋ฆฌ์ฆ์ O(N) ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋์ฒดํ ์ ์์๊น?
- ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ์ค๋ณต๋๋ ์ซ์๊ฐ ๋ค์ด ์๋์ง ํ์ธํ๋ ํจ์
- for(i in 0 until list.size){ for(j in i + 1 until list.size){ if(list[i] == list[j]){ return true } } } return false
- ์ ์ฝ๋๋ O(N^2) ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
5. ์ ํ ํด๊ฒฐ๋ฒ
var existingNum = IntArray()
for (i in 0 until arr.size){
if(existingNum[arr[i]] == 1)
return true
else
existingNum[arr[i]] = 1
}
return false
- existingNum์ด๋ผ๋ ๋ฐฐ์ด์ ์ค๋ณต ์ฌ๋ถ๋ฅผ ํ์ํ๊ฒ ํ๋ค.
- ์ ์ฝ๋๋ O(N) ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
6. ๋ง๋ฌด๋ฆฌ
- ๋น ์ค ํ๊ธฐ๋ฒ์ ๋๋ถ๋ถ์ ์๊ณ ๋ฆฌ์ฆ์ ์๋๋ฅผ ๋น๊ตํ๊ณ ํ๋ณํ ์ ์๋ค.
- ๊ทธ๋ฌ๋ ๋น ์ค ํ๊ธฐ๋ฒ์ผ๋ก ํ๋ณ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ค.
- 5์ฅ์์๋ ๋น ์ค ํ๊ธฐ๋ฒ์ผ๋ก๋ ์ ์๋ฏธํ ์ฐจ์ด๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ์ด๋ป๊ฒ ํ๋จํ๋์ง ์ดํด๋ณธ๋ค.
'๐๏ธ ์ฑ & ๊ฐ์ ์ ๋ฆฌ > ๐๏ธ ๋๊ตฌ๋ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
6์ฅ ๊ธ์ ์ ์ธ ์๋๋ฆฌ์ค ์ต์ ํ (0) | 2022.11.04 |
---|---|
5์ฅ ๋น ์ค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์๋ ์ฝ๋ ์ต์ ํ (0) | 2022.11.03 |
3์ฅ ๋น ์ค ํ๊ธฐ๋ฒ (0) | 2022.10.29 |
2์ฅ ์๊ณ ๋ฆฌ์ฆ์ด ์ค์ํ ๊น๋ญ (1) | 2022.10.29 |
1์ฅ ์๋ฃ๊ตฌ์กฐ๊ฐ ์ค์ํ ๊น๋ญ (0) | 2022.10.29 |