강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của heewon2218921
heewon2218921

câu hỏi đã được viết

Giới thiệu về giải bài toán bằng thuật toán Python (chuẩn bị cho bài kiểm tra viết mã)

9. Tạo dãy tăng dần (Tham lam)

제 코드 좀 봐주세요

Viết

·

137

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)

python코딩-테스트

Câu trả lời 1

0

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

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

분석

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

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

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

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

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

유사한 해결법 및 논의

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

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

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

Hình ảnh hồ sơ của heewon2218921
heewon2218921

câu hỏi đã được viết

Đặt câu hỏi