투포인터 3번(#16472) 조건문 순서 질문드립니다!!
안녕하세요, 선생님. 매일매일 강의 잘 듣고 있습니다!
오늘은 투포인터를 공부하다 제가 작성한 코드와 제공해주신 정답 코드의 조건문을 확인하는 순서에 차이가 있어서 질문드립니다.
해당 문제를 풀 때 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
dp[x]가 최대값이라고 확신할수 있는 이유
0
44
1
1090번 문제 질문
0
148
1
유니온파인드
0
111
1
투포인터 25:15 질문
1
127
1
#1090번 문제 반례가 궁금합니다.
0
145
1
예제코드 자바입니다
1
186
1
정수론 파트 #2247 문제에 대한 질문입니다!
0
101
0
코드 오류
0
185
1
2강 정수론 문제3 #1407 질문
0
126
0
이차원 배열 (int형)dp로 0 혹은 -1로 체크하는 방법 말고 boolean형 배열로 체크해서 바로 리턴해줄 수 없나요?
0
154
0
1717번 최적화
0
112
0
백준 22988 문제 질문
1
192
2
[Python] 백준 1090번 문제
1
223
3
강의자료에서
1
161
2
2503 문제 제한 조건 질문!
1
248
2
백준 22988 번 문제
1
191
1
추가 강의 순서
1
179
2
(*문제 풀이)1090 테스트케이스 1번 C++
1
220
2
7강 RGB 색칠하기 질문 있습니다.
1
160
2
정수론 약수 빠르게 구하기 질문
1
255
1
1090 문제의 2, 3번째 아이디어는 결국 같은거 아닌가요?
1
372
2
1090 문제 관련하여 맨해튼 거리 최솟값에 대해 질문 있습니다.
1
222
2
누적합 문제 3번 질문
1
214
2
기억 ( 누적합 ) 강의 11660 문제
1
162
2





