๐ปProgramming/Algorithm
-
[Algorithm] ์ฐ์ ๋ถ๋ถ์์ด๐ปProgramming/Algorithm 2024. 3. 5. 18:24
๋ฌธ์ N๊ฐ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ง๋๋ค. ์ด ์์ด์์ ์ฐ์๋ถ๋ถ์์ด์ ํฉ์ด ํน์ ์ซ์ M์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ช ๋ฒ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. ๋ง์ฝ N=8, M=6์ด๊ณ ์์ด์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด 1 2 1 3 1 1 1 2 ํฉ์ด 6์ด ๋๋ ์ฐ์๋ถ๋ถ์์ด์ {2, 1, 3}, {1, 3, 1, 1}, {3, 1, 1, 1}๋ก ์ด 3๊ฐ์ง์ ๋๋ค. ๋ ์ด์ค for๋ฌธ์ ๋๋ฉด์ ํ์ดํ๋ฉด ์ฝ๊ฒ ์ง๋ง ๊ทธ๋ ๊ฒ ๋์์ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋๊ฐ O(N^2)๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๋ง์ฝ N์ด 0~100000000 M๋ 0~1000000์ ๋ ๋๋ ๊ฒฝ์ฐ์๋ ์์ฒญ๋ ํฌ๊ธฐ๊ฐ ๋์ด๋ฒ๋ฆฐ๋ค. ๊ทธ๋์ ์ ๋ฒ์ ๋ฐฐ์ ๋ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ(https://suucong.tistory.com/74)์๊ณ ๋ฆฌ์ฆ๊ณผ ํฌํฌ์ธํฐ(https://suucong.tistory.com/7..
-
[Algorithm] Sliding Window ์๊ณ ๋ฆฌ์ฆ๐ปProgramming/Algorithm 2024. 3. 3. 16:53
๋ฌธ์ 12 15 11 20 25 10 20 19 13 15 ์ ๊ฐ์ N๊ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ฐฐ์ด๊ณผ ๋ณ์ K๊ฐ ์ฃผ์ด์ก์ ๋ ์ฐ์๋ K๊ฐ์ ํฉ์ค์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ตฌํด๋ผ ์์ ์ ๋ ฅ 10 3 12 15 11 20 25 10 20 19 13 15 ์์ ์ ๋ ฅ์ ์ฒซ๋ฒ์งธ ์๋ N๊ฐ์ ๋ฐฐ์ด์ ์ค๊ฒ์ด๋ค๋ผ๋ ๊ฒ์ด๊ณ , ๋๋ฒ์งธ ์๋ K๋ฅผ ์ฃผ๋ ๊ฒ์ด๋ค. ์์ ์ถ๋ ฅ 56 ์ฒ์์ ๋ด๊ฐ ์งฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ค for๋ฌธ์ ์ฌ์ฉํ์๋ค. ๊ทธ๋ฌ๋๋ ๋ Timeout Error๊ฐ ๋ฐ์ํ์๋ค. ๋๋ ์ด์ค for๋ฌธ์ ์ด์ฉํด๋ ์๊ฐ๋ณต์ก๋๊ฐ O(N)์ผ๊ฑฐ๋ผ๊ณ ์๊ฐํ์๋ค. ์ ์์ ์ ๋ ฅ์ ๊ฒฝ์ฐ์๋,,, ์๊ฐํด๋ณด๋ฉด ๋ง์ฝ N์ด 100000์ธ๋ฐ, K๊ฐ 60000์ด๋ค? ๊ทธ๋ฌ๋ฉด ์๊ฐ๋ณต์ก๋๋ ๊ฑฐ์ O(N*N)์ด ๋์ด๋ฒ๋ฆฐ๋ค.. ๊ทธ๋์ ํ์์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ ..
-
[Algorithm] Two pointers ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ๊ณตํต์์ ๊ตฌํ๊ธฐ๐ปProgramming/Algorithm 2024. 3. 2. 20:52
๋ฌธ์ A, B ๋ ๊ฐ์ ์งํฉ์ด ์ฃผ์ด์ง๋ฉด ๋ ์งํฉ์ ๊ณตํต ์์๋ฅผ ์ถ์ถํ์ฌ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. (๊ฐ ์งํฉ์์ ์์๋ ์ค๋ณต๋์ง ์๋๋ค.) ์ ๋ ฅ ์์ 5 1 3 9 5 2 5 3 2 5 7 8 ์ถ๋ ฅ ์์ 2 3 5 ์ผ๋จ ๋ด๊ฐ ์ง ์ฝ๋๋ ์ด์ค for๋ฌธ์ ์ด์ฉํ์ฌ n๊ณผ m์ด ๊ฐ ๋ฆฌ์คํธ์ ์์์ ์๋ผ๊ณ ํ์์ ๋ ์๊ฐ๋ณต์ก๋๊ฐ O(n*m)์ด์๋ค. ๊ทธ๋ฌ๋๋ ๋ฆฌ์คํธ๋ณ๋ก ๋ฐ์ดํฐ๊ฐ ๊ฐ 30000๊ฐ์ผ ๊ฒฝ์ฐ ํ์์์ ์ค๋ฅ๊ฐ ๋ฌ๋ค. ์ ํ์ด 1000ms์ธ๋ฐ 1700ms์ธ๊ฐ.. (๋จธ์ฑ..) ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ๋ค๋ฉด ์๊ฐ๋ณต์ก๋๊ฐ O(n+m)์ด ๋๊ฒ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ผ๋ก ํ์์์ ์๋ฌ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค. ์ด์ค for๋ฌธ import java.util.ArrayList; import java.util.Scann..