해결된 질문
작성
·
204
1
안녕하세요, 선생님. 매일매일 강의 잘 듣고 있습니다!
오늘은 투포인터를 공부하다 제가 작성한 코드와 제공해주신 정답 코드의 조건문을 확인하는 순서에 차이가 있어서 질문드립니다.
해당 문제를 풀 때 while 문 안의 아래 2가지 조건을 확인하는데요,
조건 1 if arr[e] in letter:
조건 2 if len(letter) < N:
제가 풀어봤을 때 저는 조건1 > 조건 2를 확인하도록 구현을 했는데
정답 코드는 조건2 > 조건 1를 확인하더라구요.
물론 저는 실제 정답인 4와는 달리 답이 5가 나와서 코드가 어디에선가 잘못되긴 한 것 같은데
틀린 이유가 조건문에 순서와 상관없이 제가 단순히 잘못 구현한 것인지
아니면 반드시 조건문을 조건2>조건1의 순서로 확인해야되는 문제인지 판단이 서지 않아 질문드립니다!
그리고 앞으로 다른 문제를 풀 때도 어떤 조건을 먼저 확인해야 되는 것인지 어떻게 판단하면 좋을지 판단 기준이 있는지도 궁금합니다 ^^
#[나의 코드]
N = int(input())
arr = list(input())
s = 0
e = 0
letter = []
letter.append(arr[s])
ans = 0
while s < len(arr) and e < len(arr):
ans = max(ans, e-s+1)
if arr[e] in letter: ####### 조건 1
e += 1
else:
if len(letter) < N: ####### 조건 2
letter.append(arr[e])
e += 1
else:
s += 1
e = s
letter = [arr[s]]
print(ans)
#[정답 코드]
n = int(input())
arr = list(input())
arr.pop()
#inch-worm
s = 0
e = 0
letters = []
letters.append(arr[s])
dist = 0
start_flag = -1
while s < len(arr) and e < len(arr):
# print(s,e,letters)
dist = max(dist, e-s+1)
if len(letters) <= n: ########조건 2
e += 1
if e < len(arr) and arr[e] not in letters: #######조건 1
letters.append(arr[e])
if len(letters) > n :
s = s+1
e = s
letters = [arr[s]]
print(dist)
답변 1
0
질문 감사합니다!
제가 좋아하는 고양이 문제까지 푸셨군요!! 🙂 !!
조건의 순서는 상관없이, 식에 약간의 오류가 보입니다 ㅎㅎ ( 앞으로 문제를 푸실 때도, 조건의 순서는 크게 신경쓰지 않으셔도 됩니다! )
아래는 반례입니다! 확인해보시고 답글주세요!
2
abcde
2
aabbccdde