๐์๊ณ ๋ฆฌ์ฆ/๋ฐฑ์ค
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 15989๋ฒ: 1, 2, 3 ๋ํ๊ธฐ 4
๋ฌธ์ ํ์ด 1. ๋ชจ๋ ์ ์(n)๋ 1๋ง ์จ์ ๊ตฌํ ์ ์๋ค. n ๊ฒฝ์ฐ์ ์ 0 ์์ 1 1 2 1 + 1 3 1 + 1 + 1 4 1 + 1 + 1 + 1 5 1 + 1 + 1 + 1 + 1 1์ ํฉ์ผ๋ก ์ ์ n์ ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ 1๊ฐ์ง ์ด๋ฏ๋ก dp๋ฅผ ์ ๋ถ 1๋ก ์ด๊ธฐํํ๋ค. dp = [1] * 10001 2. 1, 2์ ํฉ์ผ๋ก ์ ์ n์ ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ (n - 2)๋ฅผ 1์ ํฉ๋ง์ผ๋ก ๋ํ๋ธ ๋ฐฉ๋ฒ์ 2๋ฅผ ๋ํด์ฃผ๋ฉด ๋๋ค. n ๊ฒฝ์ฐ์ ์ 0 (์์) 1 1 2 1 + 1, (์์) + 2 3 1 + 1 + 1, 1 + 2 4 1 + 1 + 1 + 1, 1 + 1 + 2 5 1 + 1 + 1 +1 + 1, 1 + 1 + 1 + 2 3. 1, 2, 3์ ํฉ์ผ๋ก ์ ์ n์ ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ (n - 3)์ 1, 2์..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1644๋ฒ: ์์์ ์ฐ์ํฉ
๋ฌธ์ ํ์ด ์๋ผํ ์คํ ๋ค์ค์ ์ฒด, ๋ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํด ํ๋ฉด ๋๋ค. ๊ตฌ๊ฐ ํฉ์ ์ ํ์ฌํญ..ใ ใ ๋๋๋น๋์ ๊ฐ์์ ์ ๋ถ ์ ๋ฆฌ๋์ด์๋ค. https://www.youtube.com/watch?v=cswJ1h-How0&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=9 ์ฝ๋ import sys, math input = sys.stdin.readline n = int(input()) intervalSum = [0] isPrimeList = [True for _ in range(n + 1)] for i in range(2, int(math.sqrt(n)) + 1): if isPrimeList[i]: for j in range(i * 2, n + 1, i): isPrimeList[j] ..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1781๋ฒ: ์ปต๋ผ๋ฉด
๋ฌธ์ ํ์ด 1. ๋ฐ๋๋ผ์ธ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ๋ฌธ์ ๋ฐฐ์ด ๋ฐ๋๋ผ์ธ 1 1 2 2 3 3 6 ์ปต๋ผ๋ฉด 7 6 4 5 1 2 1 2. ์ฐ์ ์์ ํ์ ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ฅผ ๋ฃ๋๋ค. ์ฐ์ ์์ ํ ๋ ์ง 1์ผ 2์ผ 3์ผ 4์ผ 5์ผ ๋ฐ๋๋ผ์ธ 1 ์ปต๋ผ๋ฉด 7 1์ผ ์ฐจ, 1๋ฌธ์ ์ฐ์ ์์ ํ์ ๋ฌธ์ ๋ฅผ ์ฝ์ = ํด๋น ๋ฌธ์ ๋ฅผ ํ ๋ง์ฝ ์ฐ์ ์์ ํ์ 2๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฝ์ ํ๋ค๋ฉด, 2์ผ์ด ์ง๋ ์ ์ด๋ค. (ํ ๋ฌธ์ ๋น ํ๋ฃจ๊ฐ ๊ฑธ๋ฆฌ๋ฏ๋ก) 3. ์ฐ์ ์์ ํ์ ๋ ๋ฒ์งธ ๋ฌธ์ ๋ฅผ ์ฝ์ ์ฐ์ ์์ ํ ๋ ์ง 1์ผ 2์ผ 3์ผ 4์ผ 5์ผ ๋ฐ๋๋ผ์ธ 1 1 ์ปต๋ผ๋ฉด 6 7 2์ผ ์ฐจ, 2๋ฌธ์ 2์ผ์ฐจ์ผ ๋ ๋ฐ๋๋ผ์ธ์ด 1์ผ๊น์ง์ธ ๋ฌธ์ ๋ ํ ์ ์๋ค! ๋ํ ๋ํธ๋ ๋ง์ง๋ง์ ์ฝ์ ๋ ๋ฐ๋๋ผ์ธ๋ณด๋ค ๋ง์ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค. ๋ฐ๋ผ์ ๋ง์ง๋ง์ ์ฝ์ ๋ ๋ฌธ์ ์ ๋ฐ๋๋ผ์ธ < ํ์ฌ ๋ ์ง..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1202๋ฒ: ๋ณด์ ๋๋
๋ฌธ์ ํ์ด ๊ฐ๋ฐฉ๊ณผ ๋ณด์์ ์ ๋ ฌํ ํ, ๊ฐ ๊ฐ๋ฐฉ์ ๋ฃ์ ์ ์๋ ๋ณด์ ๊ฐ๊ฒฉ์ ์ต๋ ๊ฐ์ ๊ตฌํ๋ค. 1. ์ด๊ธฐ ๊ฐ ๋ณด์ ๋ฌด๊ฒ 1 2 5 ๊ฐ๊ฒฉ 65 99 23 ๊ฐ๋ฐฉ ๋ฌด๊ฒ 2 10 ์์ ํ ๋ณด์์ ๊ฐ๊ฒฉ 0 0 2. ์ฒซ ๋ฒ์งธ ๊ฐ๋ฐฉ(2)์ ๋ค์ด๊ฐ ์ ์๋ ๋ณด์์ ์ฐ์ ์์ ํ์ ์ ์ฅ ๋ณด์ ๋ฌด๊ฒ 5 ๊ฐ๊ฒฉ 23 (๋ฐฐ์ด ๋ณด์์์ ๋ฌด๊ฒ๊ฐ 1, 2์ธ ๊ฐ์ ๋นผ๋ด์ด ์ฐ์ ์์ ํ์ ์ ์ฅํจ) ์ฐ์ ์์ ํ (๊ธฐ์ค : ๊ฐ๊ฒฉ) ๋ฌด๊ฒ 2 1 ๊ฐ๊ฒฉ 99 65 (์ฒซ ๋ฒ์งธ ๊ฐ๋ฐฉ์ ๋ฌด๊ฒ๋ 2์ด๊ณ , 2๋ณด๋ค ์์ ๋ณด์๋ค์ ์ฐ์ ์์ ํ์ ๋ฃ์) ๊ฐ๋ฐฉ ๋ฌด๊ฒ 2 10 ์์ ํ ๋ณด์์ ๊ฐ๊ฒฉ 99 0 (๊ฐ์ฅ ํฐ ๊ฐ์ธ 99๋ฅผ ๊ฐ๋ฐฉ(2)์ ์ถ๊ฐ) ์ฐ์ ์์ ํ (๊ธฐ์ค : ๊ฐ๊ฒฉ), ์ฒซ ๋ฒ์ฌ ๊ฐ๋ฐฉ์ ๊ฐ๊ฒฉ์ด 99์ธ ๋ณด์์ ๋ฃ์ด์คฌ์ผ๋ฏ๋ก pop ๋ฌด๊ฒ 1 ๊ฐ๊ฒฉ 65 3. ๋จ์ ๋ณด..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1208๋ฒ: ๋ถ๋ถ์์ด์ ํฉ 2
๋ฌธ์ ํ์ด 1. ์ฃผ์ด์ง ์์ด์ ์ ๋ฐ์ผ๋ก ๋๋๋ค. [-7, -3, -2, 5, 8] -> [-7, -3], [-2, 5, 8] 2. ๋๋ ์ง ์์ด์ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ค. A : [-7, -3] -> [-7], [-3], [-7, -3] B : [-2, 5, 8] -> [-2], [5], [8], [-2, 5], [-2, 8], [5, 8], [-2, 5, 8] 3. A์ ๋ถ๋ถ ์์ด ์ค ํ๋๋ฅผ ์ ํํ๊ณ , B์ ๋ถ๋ถ ์์ด ์ค ํ๋๋ฅผ ์ ํํ๋ฉด ๋ชจ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ ์ ์๋ค. ex) [-7, -3, 5] = [-7, -3] + [5] 4. A, B ๋ถ๋ถ ์์ด์ ํฉ์ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. sumA : [-7, -3, -10] sumB : [-2, 3, 5, 6, 8, 11, 13] 5. sumA, sumB ๊ทธ๋ฆฌ๊ณ su..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 15732๋ฒ: ๋ํ ๋ฆฌ ์จ๊ธฐ๊ธฐ
๋ฌธ์ ํ์ด ์ ๋ ฅ์ด ๋ค์๊ณผ ๊ฐ์ ๋, 200 2 5 100 150 10 110 150 15 ์์์ ๋ฒํธ๋ 0 ~ 200๊น์ง ์๋ค. ์ฐ์ ์ค๊ฐ ๊ฐ(100)์ ๊ตฌํ๊ณ , 0๋ฒ ์์์์ 100๋ฒ ์์๊น์ง์ ๋ํ ๋ฆฌ ๊ฐ์๋ฅผ ๊ตฌํ๋ค. ๋ํ ๋ฆฌ ๊ฐ์์ ๋ฐ๋ผ ์ด๋ถ ํ์์ ์ํํ๋ฉด ๋๋ค. ์ฝ๋ import sys input = sys.stdin.readline #๋ํ ๋ฆฌ ์ ๊ตฌํ๊ธฐ def calAcorn(rules, boxNum): cnt = 0 for start, end, margin in rules: if boxNum < start: continue end = min(boxNum, end) cnt += (end - start) // margin + 1 return cnt def binarySearch(rules, end, ..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 10942๋ฒ: ํฐ๋ฆฐ๋๋กฌ?
๋ฌธ์ ํ์ด dp[i][j] : i ~ j๊น์ง์ ์์ด์ด ํฐ๋ฆฐ๋๋กฌ์ธ์ง ์ ์ฅ ex) dp[1][3] = True : 1 ~ 3๊น์ง์ ์์ด์ด ํฐ๋ฆฐ๋๋กฌ ์ arr ๋ฐฐ์ด์ ์ ์ฒด ์์ด ์ ์ฅ 1. ์์๊ฐ ํ๋์ธ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด ํฐ๋ฆฐ๋๋กฌ ์ dp[0][0], dp[1][1], ... dp[n][n] = True 2. arr[i] == arr[i+1]์ธ ๊ฒฝ์ฐ ํฐ๋ฆฐ๋๋กฌ ์ (๋ถ๋ถ ์์ด์ ๊ธธ์ด๊ฐ 2์ด๊ณ , ์์๊ฐ ๋์ผํ ๊ฒฝ์ฐ) ex) 11, 22, 33, 44 ๋ ํฐ๋ฆฐ๋๋กฌ ์ 3. a~b๊น์ง์ ์์ด์์ arr[a] == arr[b]์ด๊ณ ๊ทธ ์ฌ์ด์ ์์ด์ด ํฐ๋ฆฐ๋๋กฌ์ธ ๊ฒฝ์ฐ ์์๊ฐ 4๊ฐ์ธ ๊ฒฝ์ฐ, 5๊ฐ์ธ ๊ฒฝ์ฐ ... ๋ฐ๋ณตํ๋ฉด ๋๋ค. ์ฝ๋ import sys input = sys.stdin.readline n = int(input()) a..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1695๋ฒ: ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ / ํ์ด์ฌ ๋ฉ๋ชจ๋ฆฌ์ด๊ณผ ํด๊ฒฐ
๋ฌธ์ ํ์ด 1. ์ฃผ์ด์ง ์์ด์์ ํฐ๋ฆฐ๋๋กฌ ์์ด์ ๊ตฌํ๋ค. 12342์ ๋ถ๋ถ ์์ด ์ค ํฐ๋ฆฐ๋๋กฌ์ 242(12342)์ด๋ค. 2. ํฐ๋ฆฐ๋๋กฌ์ ์ ๊ฐ์ด๋ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ด์ ๋๋๋ค. 123 4 2 3. ํฐ๋ฆฐ๋๋กฌ์ด ์๋ ์๋ฅผ ๋ฐ๋ํธ์ ์ถ๊ฐํ๋ค. 123 4 321 ์์ด์์ ์ด๋ฏธ ํฐ๋ฆฐ๋๋กฌ์ธ ์์ด์ ๊ตฌํ๊ณ , ํฐ๋ฆฐ๋๋กฌ์ด ์๋ ์๋ง ์ถ๊ฐํ๋ฉด ๋๋ฏ๋ก ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋๋ค๋ฅธ ์์ ํฐ๋ฆฐ๋๋กฌ์ ์ฐพ๋ ๊ณผ์ ์์ DP๊ฐ ์ด์ฉ๋๋ค. [์์ด A] 12342 [์์ด A๋ฅผ ๋ค์ง์ ์์ด B] 24321 ์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์์ด A์ ์์ด B์ ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด(LCS)์ด ๊ณง ํฐ๋ฆฐ๋๋กฌ ์์ด์ด๋ค. (์์ด A๋ฅผ ๋ค์ง์์ ๋์ ๋ถ๋ถ ์์ด = ์์ด A์ ๋ถ๋ถ ์์ด ์ด๋ฏ๋ก, ํฐ๋ฆฐ๋๋กฌ ์์ด์ ์กฐ๊ฑด์ ์๊ฐํด๋ด๋ผ) ๋ง๋ก ์ค๋ช ํ๊ธฐ๊ฐ ์ฐธ ์ด๋ ต๋ค... ..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 17404๋ฒ: RGB๊ฑฐ๋ฆฌ 2
๋ฌธ์ ํ์ด ์ฒซ ๋ฒ์งธ ์ง์ ์์ R๋ก ์ ํํ๊ณ DP๋ฅผ ํตํด ์ต์๊ฐ์ ๊ตฌํ๋ค. G, B์ ๋ํด ๋ฐ๋ณต ์ฝ๋ import sys input = sys.stdin.readline n = int(input()) arr = [list(map(int, input().split())) for _ in range(n)] def minPaint(selHouse): dp = [[0] * 3 for _ in range(n)] dp[0] = arr[0] for i in range(3): if i == selHouse: dp[1][i] = 1e9 continue dp[1][i] = arr[1][i] + arr[0][selHouse] for i in range(2, n): dp[i][0] = min(dp[i - 1][1], dp[i..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 14942๋ฒ: ๊ฐ๋ฏธ
๋ฌธ์ ํ์ด 1. ์ฃผ์ด์ง ์ ๋ ฅ์ ์๋ฐฉํฅ ๊ฐ์ ์ด๋ฏ๋ก ๋จ๋ฐฉํฅ ๊ฐ์ ์ผ๋ก ๋ง๋ค์ด์ค์ผํจ 2. ํฌ์๋ฐฐ์ด ์ฌ์ฉ https://hello-capo.netlify.app/algorithm-sparse-table/ ๐งฉ [Algorithm] ํฌ์ ๋ฐฐ์ด(Sparse Table) ์๊ณ ๋ฆฌ์ฆ | hello-capo! ํฌ์ ๋ฐฐ์ด(Sparse Table) ๋ฐฐ์ด ์์์ ๊ฐ์๊ฐ ๋ฌด์กฐ๊ฑด ๋ฐฐ์ด์ length ๊ฐ๋ณด๋ค ์์ ๋ฐฐ์ด ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ ๋ง์ ํฌ์ ํ๋ ฌ๊ณผ ๊ฐ์ด, ํฌ์ ๋ฐฐ์ด์ ๋ฐฐ์ด์ ์์ ์์น๊ฐ ์ฐ์์ ์ด์ง ์์ ๋ฐฐ hello-capo.netlify.app 3. LCA์ ์ ์ฌํ๊ฒ ๋ ธ๋ ํ์ https://cyberflower.github.io/2019/07/22/LCA.html LCA(Least Common Ancestor)..