강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

heewon221님의 프로필 이미지
heewon221

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

9. 증가 수열 만들기(그리디)

제 코드 좀 봐주세요

작성

·

103

0

4,5번이 오류가 뜨는데 원인을 모르겠습니다..

왼쪽, 오른쪽 값 비교해서 증가수열 구하는거는 비슷한거 같은데 말이죠...

n = int(input())

a = list(map(int, input().split()))

tmp = min(a[0], a[-1])

s = smp = '' # 문자열 임시변수, 문자열 중 가장 큰 값 변수

cnt = cntmp = 0 # 길이 임시변수, 길이 중 가장 큰 값 변수

while len(a) > 0:

if tmp <= a[0] and tmp <= a[-1]:

i = a.index(min(a[0], a[-1]))

tmp = a[i]

a.pop(i)

cnt +=1

if i == 0:

s += 'L'

else:

s += 'R'

#print(a, cnt, s, tmp)

elif tmp <= a[0] or tmp <=a[-1]:

i = a.index(max(a[0],a[-1]))

tmp = a[i]

a.pop(i)

cnt+=1

if i== 0:

s +='L'

else:

s+='R'

#print(a, cnt, s, tmp)

else:

if cntmp < cnt:

cntmp = cnt

smp = s

cnt = 0

s = ''

i = a.index(min(a[0],a[-1]))

tmp = a[i]

cnt+=1

if i == 0 or len(a) == 0:

s += 'L'

else:

s+= 'R'

a.pop(i)

#print(a, cnt, s, tmp)

print(cntmp)

print(smp)

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

heewon221님, 제공하신 코드는 주어진 리스트에서 증가하는 수열을 만드는 문제로 보입니다. 이 코드에서 4, 5번 테스트케이스에서 오류가 발생하는 이유를 분석해 보겠습니다.

분석

코드는 리스트의 양 끝값을 비교하며, 작은 값을 기반으로 무엇을 추가할지를 결정합니다. 증가수열을 만들기 위해 왼쪽과 오른쪽 끝 값을 비교하고 적절한 대처를 해야 합니다. 하지만 코드의 몇 가지 핵심적인 부분에서 문제가 발생할 수 있습니다.

  1. index 사용에서의 문제점:

    • index 메서드는 리스트에서 처음으로 일치하는 요소의 인덱스를 반환합니다. 하지만 리스트에서 중복 요소가 있을 때, 의도한 요소가 아닌 다른 반복되는 값의 인덱스를 반환할 수 있습니다. 이는 특히 maxmin과 함께 사용할 때 의도치 않은 동작을 유발할 수 있습니다.
  2. 논리 오류:

    • 코드의 else 부분에서, 임시 카운트(cnt)와 최종 카운트(cntmp)를 비교하고 나서 다시 수열을 찾기 시작할 때, 이전의 임시 수열(s)과 카운트(cnt)를 초기화하지 않고 새롭게 시작하는 것이 적절한지 확인이 필요합니다.
  3. 초기화 문제:

    • tmp, cnt, s 등이 새롭게 시작할 때 적절히 초기화되지 않아 이전의 값이 남아 있을 가능성이 있습니다.

유사한 해결법 및 논의

similar 문제를 논의한 기존의 질문과 답변을 참고하시면 도움이 될 것입니다. 예를 들어, 제 코드도 한 번만 확인 부탁드립니다.과 같은 질문에서 다양한 사례와 논의가 이루어졌습니다. 해당 내용에서는 코드의 효율성을 더 향상시킬 수 있는 피드백이 포함되어 있으니 도움이 될 것입니다.

추가적으로 다른 해결 방법도 확인하실 수 있습니다:
- 코드 길이 때문에 질문드립니다.
- 제 코드에 대한 질문입니다.

제가 제시한 설명을 바탕으로 코드를 다시 리뷰하시거나 개선 방향을 시도해보시면 좋을 것 같습니다. 저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

heewon221님의 프로필 이미지
heewon221

작성한 질문수

질문하기