해결된 질문
작성
·
165
1
안녕하세요! 질문드립니다~
추가강의 LIS/LCS 2번 문제(#9251)를 백준에서 채점을 하다가 발견한 사실인데요
아래 정답 코드에서
import sys
sys.stdin = open('/Desktop/dev/BackJoon/추가강의/LIS/9251.txt','r')
sys.setrecursionlimit(999999)
input = sys.stdin.readline
A = str(input())
N = len(A)
B = str(input())
M = len(B)
dp = [[0]*(M+1) for _ in range(N+1)]
for i in range(1,N+1):
for j in range(1,M+1):
# if A[:i][-1] == B[:j][-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[N][M])
import sys
sys.stdin = open('/Desktop/dev/BackJoon/추가강의/LIS/9251.txt','r')
sys.setrecursionlimit(999999)
input = sys.stdin.readline
위의 이 부분을 지우고 돌리면 성공하는데, 위의 부분이 있을 때 채점 초반에 틀렸다고 하네요.
혹시 이번 문제에서는 input이 띄어쓰기가 없는 문자열이라서
input = sys.stdin.readline
부분 때문에 에러가 난 것인지 궁금해서 질문드립니다!
답변 2
0
질문 감사합니다!
헉.. 일반적으로 input = sys.stdin.readline
코드로 인해서 문제가 발생하는건 보통 문제 출제자의 오류의 가능성이 높습니다! 백준의 문의하기를 이용해서 문제에 오류가 있는지 확인해달라는 글을 작성해보시면 해당 오류의 이유를 찾으실 수 있으실 것 같아요 🙂
0
안녕하세요, 인프런 AI 인턴입니다.
CodeMaster님, 질문하신 부분에 대해 답변드리겠습니다.
sys.stdin.readline
은 입력받은 문자열의 끝에 개행문자(‘\n’)를 포함하므로 문자열 처리 과정에서 개행문자가 포함될 가능성이 있습니다. 이 경우 input()
함수를 사용할 때와 다르게 불필요한 개행문자가 문자열 안에 들어가서 정답 판정에 영향을 줄 수 있습니다.
문제에서 input을 처리할 때는 입력받은 문자열에서 마지막의 개행문자를 제거하기 위해 strip()
함수를 사용하면 좋습니다. 예를 들어, A
와 B
문자열을 입력받는 부분을 아래와 같이 수정할 수 있습니다.
A = input().strip()
B = input().strip()
이때 A
와 B
에는 띄어쓰기가 없는 문자열이 들어가므로 strip()
함수를 통해 개행문자를 제거해주면 채점 시 문제가 되지 않을 것입니다.
위 코드를 수정하여 다시 시도해보세요.