์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ๊ทธ๋ฆฌ๋
- ํ๋ก ํธ์ค๋
- ๊ทธ๋ฆฌ๋์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉ
- ํ์ด์ฌ
- ๋ชจ๋ฐ์ผ์ฑํ๋ก๊ทธ๋๋ฐ
- ์ปด๊ณต
- ์๋ฃ๊ตฌ์กฐ
- SSE
- ์๊ณ ๋ฆฌ์ฆ
- ChatGPT
- ๋ฐฑ์ค
- ๋ฐฑ์คํ์ด
- ์ฝ๋ฉํ ์คํธ
- ์น๊ฐ๋ฐ๊ธฐ๋ก
- ๊ฐ๋ฐ์
- ์ปดํจํฐ๊ณตํ
- boj11653
- ๋ฐฑ์ค1436
- ํ๋ก๊ทธ๋๋ฐ
- ์ฐ์ ์์ํ
- ๋ฆฌ์กํธ
- ๋จ์ํ ์คํธ
- ์ดํญ๊ณ์
- ์น๊ฐ๋ฐ
- spring
- ์คํ๋ง
- ๋ฐฑ์๋
- ์ปด๊ณต์
- ๋ฆฌ์กํธ๋ค์ดํฐ๋ธ
- Today
- Total
๐ป๐ญ๐ง๐
BOJ 9251 : LCS (Python) ๋ณธ๋ฌธ
๋ฌธ์
https://www.acmicpc.net/problem/9251
9251๋ฒ: LCS
LCS(Longest Common Subsequence, ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด)๋ฌธ์ ๋ ๋ ์์ด์ด ์ฃผ์ด์ก์ ๋, ๋ชจ๋์ ๋ถ๋ถ ์์ด์ด ๋๋ ์์ด ์ค ๊ฐ์ฅ ๊ธด ๊ฒ์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์๋ฅผ ๋ค์ด, ACAYKP์ CAPCAK์ LCS๋ ACAK๊ฐ ๋๋ค.
www.acmicpc.net
์ฝ๋
st1 = list(input())
st2 = list(input())
if len(st1)<len(st2):
array1 = st1
array2 = st2
else:
array1 = st2
array2 = st1
order = [0] * len(array1)
dp = [1] * len(array1)
result = 0
for i in range(len(array2)):
if array1.count(array2[i]) == 0:
array2[i] = 0
while array2.count(0)!=len(array2):
for i in range(len(array1)):
if array1[i] in array2:
order[i] = (array2.index(array1[i]))+1
array2[array2.index(array1[i])] = 0
for i in range(len(array1)):
if order[i] != 0:
for j in range(0,i):
if order[j]!=0 and order[j] < order[i]:
dp[i] = max(dp[i] , dp[j]+1)
if result < max(dp):
result = max(dp)
dp = [1] * len(array1)
print(result)
ํ์ด
๋ฌธ์์ด ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค ๊ฐ์ ์ด์ฉํด LIS๋ก ํด๊ฒฐํ ๊ฒ์ด๋ค.
array1 ์ ๋ ๊ธด ๋ฌธ์์ด ๋ฆฌ์คํธ๋ฅผ, array2์ ๋ ์งง์ ๋ฌธ์์ด ๋ฆฌ์คํธ๋ฅผ ๋ด๋๋ค.
array1์ array2์ ์ํ๋ฒณ์ด ํ๋๋ ์๋ ๊ฒฝ์ฐ์๋ ๊ทธ ์ํ๋ฒณ ์๋ฆฌ์ ์ซ์ 0์ ๋์ ๋ฃ์ด๋๋ค.
→ ์ ์ด์ ์กด์ฌํ์ง ์๋ ์ํ๋ฒณ์ด๋ผ๋ ๊ฑธ ํ์ธํ๊ธฐ ์ํด
array1์ ์ํ๋ฒณ(array1์ i๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋ ๋ฌธ์)์ด array2์ ์กด์ฌํ๋ฉด order[i] ์ array2์์ ๊ทธ ์ํ๋ฒณ์ด ์กด์ฌํ๋ (์ธ๋ฑ์ค+1) ๊ฐ์ ๋์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ array2์์ ๊ทธ ์ํ๋ฒณ์ด ์์นํ๋ ์๋ฆฌ์๋ 0์ ๋์ ํด์ ์ด๋ฏธ ์ฒดํฌํ ๊ณณ์์ ํ์ํ๋ค.
→ ๋ค์ array1์์ ๋ ๊ฐ์ ์ํ๋ฒณ์ด ๋์์ ๋ array2์์ ์ด๋ฏธ ์ฒดํฌํ ๊ณณ์ ๋๊ธฐ๊ณ ํ์ธํ ์ ์๋๋ก ํ๊ธฐ ์ํด์
array1์ ์ํ๋ฒณ์ ๋ค ํ์ธํ์ ๋๋ง๋ค LIS ๋ฅผ ์ด์ฉํด ๋ต(๋ณ์ result)์ ๊ตฌํ๋ค. ์๋ก ๊ตฌํ result๊ฐ์ด ์ด์ ์ result๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ result์ ๊ฐ์ ์๋ก ๊ตฌํ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค.
array2์ ์ํ๋ฒณ์ ๋ชจ๋ ํ์ธํ์ ๋ while๋ฌธ์ ์ข ๋ฃํ๋ค. (array2์ ์๋ 0์ ๊ฐ์๊ฐ array2์ ๊ธธ์ด์ ๊ฐ์์ง ๋)
์์)
์ฒซ๋ฒ์งธ ์ค : order ๋ฆฌ์คํธ ๊ฐ
๋๋ฒ์งธ ์ค : array1 ACAYKP
์ธ๋ฒ์งธ ์ค : array2 CAPCAK
1. ์ฒ์์๋ ์ด๋ ๊ฒ ๊ตฌ์ฑ์ด ๋ผ์๋ค.
0 | 0 | 0 | 0 | 0 | 0 |
A | C | A | Y | K | P |
C | A | P | C | A | K |
2. array1์ 0๋ฒ ์ธ๋ฑ์ค๋ถํฐ ์์ํด์ ๊ทธ ์ํ๋ฒณ์ด array2์ ์กด์ฌํ๋์ง ํ์ธํ๋ค.
์ง๊ธ์ array2์ 2๋ฒ์งธ ์์น์ A๊ฐ ์์ผ๋ฏ๋ก order[0]์ 2๋ผ๊ณ ์ ์ฅํด๋๊ณ array2์ 2๋ฒ์งธ ์์น์ ์ํ๋ฒณ์ 0์ผ๋ก ๋ฐ๊ฟ์ค๋ค.
2 | 0 | 0 | 0 | 0 | 0 |
A | C | A | Y | K | P |
C | 0 | P | C | A | K |
3. ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ณ์ ์งํํ๋ค.
2 | 1 | 0 | 0 | 0 | 0 |
A | C | A | Y | K | P |
0 | 0 | P | C | A | K |
4. array1์ ํ๋ฐํด ๋ค ๋๋ฉด ์๋์ ๊ฐ์ด ๋๋ค.
2 | 1 | 5 | 0 | 6 | 3 |
A | C | A | Y | K | P |
0 | 0 | 0 | C | 0 | 0 |
order ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด LIS๋ฅผ ๊ตฌํ๋ฉด ํ์ฌ result ๋ [2,5,6] ์ผ๋ก 3์ด ๋๋ค.
์์ง array2 ์ ์ฒด๊ฐ 0์ด ์๋๋ฏ๋ก ํ๋ฒ ๋ for๋ฌธ์ ๋๋ฆฌ๋ฉด
5. ์๋์ ๊ฐ์ด ๋๋ค.
2 | 4 | 5 | 0 | 6 | 3 |
A | C | A | Y | K | P |
0 | 0 | 0 | 0 | 0 | 0 |
์ฌ๊ธฐ์์ order ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด LIS๋ฅผ ๊ตฌํ๋ฉด ํ์ฌ result๋ [2,4,5,6]์ผ๋ก 4๊ฐ ๋๋ค.
array2์ ๊ฐ์ด ๋ชจ๋ 0์ด ๋์์ผ๋ฏ๋ก(array2์ ์ํ๋ฒณ์ ๋ชจ๋ ์ฒดํฌํจ.) while๋ฌธ์ ์ข ๋ฃ๋๋ค.
๋ต์ 4๋ค!
์ค๋ฅ...
BNBNBN ๊ณผ NB ๋ฅผ ์ ๋ ฅํ์ ๋๋ ๋ต์ด 2๊ฐ ๋์์ผํ๋๋ฐ 1์ด ๋์จ๋ค. ์ด๋ฏธ ์ฒดํฌํ ์ํ๋ฒณ์ ๋ค์ ๋ณผ ์ ์์ด์ ๋ฐ์ํ ์ค๋ฅ์ธ ๊ฒ ๊ฐ์๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋์ ํ ๋ชจ๋ฅด๊ฒ ๋ค..
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ 11000 : ๊ฐ์์ค ๋ฐฐ์ (Python) (0) | 2023.02.15 |
---|---|
BOJ 1461 : ๋์๊ด (Python) (4) | 2023.02.15 |
BOJ 2631 : ์ค์ธ์ฐ๊ธฐ (Python) (0) | 2023.02.06 |
BOJ 11053 : ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (Python) (0) | 2023.02.06 |
BOJ 10844 : ์ฌ์ด ๊ณ๋จ ์ (Python) (0) | 2023.01.31 |