[백준] 15482 한글 LCS (파이썬)

파이썬/코딩테스트|2023. 11. 2. 20:00

https://www.acmicpc.net/problem/15482

 

15482번: 한글 LCS

첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 최대 1000글자이고, 유니코드 U+AC00(가)부터 U+D7A3(힣)까지로만 이루어져 있으며, UTF-8로 인코딩 되어 있다.

www.acmicpc.net

 

a, b = input(), input()

dp = [[0 for _ in range(len(b)+1)]
      for _ in range(len(a)+1)]

for i in range(1, len(a)+1):
    for j in range(1, len(b)+1):
        if a[i-1] == b[j-1]:
            dp[i][j] = dp[i-1][j-1]+1
        else:
            dp[i][j] = max(dp[i-1][j], dp[i][j-1])

print(dp[-1][-1])

놀랍게도 파이썬에서는 아무런 처리 없이 그냥 LCS를 돌리면 된다.

 

import sys
if 'utf-8' != sys.stdin.encoding:
    raise Exception
# 로컬 환경은 다를 수 있지만
# 백준 python3 환경은 utf-8
# 백준 pypy3 환경은 utf-8이 아닌 무언가

print(sys.getdefaultencoding())
print(sys.stdin.encoding)
print(sys.stdout.encoding)
# 인코딩을 확인하는 방법은 위와 같고

sys.stdin.reconfigure(encoding='utf-8')
sys.stdout.reconfigure(encoding='utf-8')
# 인코딩을 변경하는 방법은 위와 같다.

# python, pypy 둘 다 전부 주석 처리 해도 답 처리 된다.
# 출제자가 의도한 풀이는 유니코드를 3자리씩 끊어서 비교하기인 듯하다.
# C와 달리 파이썬에서는 1글자로 처리되는 듯하다.

이정도 정보는 확인해두면 좋을 듯하다.

댓글()