inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

투포인터 3번(#16472) 조건문 순서 질문드립니다!!

해결된 질문

287

한혜경

작성한 질문수 6

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)

python 코딩-테스트 알고리즘

답변 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