inflearn logo
강의

Khóa học

Chia sẻ kiến thức

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)

제 코드 좀 봐주세요

148

heewon221

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

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

communityai8509

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

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

분석

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

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

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

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

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

유사한 해결법 및 논의

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

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

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

기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.

1

77

2

스택에서 ')'을 만나는 경우

0

78

3

문제가 어디있나요?

0

65

2

변수 or 함수명

0

61

1

침몰하는 타이타닉 문제 질문입니다

0

56

1

AA.py 책점 에러

0

57

1

오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.

0

111

2

5.동전분배하기 문제 밑에코드도 정답이될까요?

0

110

1

아나그램 비교 코드

0

116

2

AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.

0

160

2

문제 링크가있나여?

0

147

2

채점기 Time Limit Exceeded 오류 문의

1

163

2

동적계획법은 사용하는 문제

0

126

2

예외가 존재할 가능성?

0

97

1

3번이 안풀립니다

0

93

0

5번 틀림

0

114

0

오류원인?

0

98

0

리스트 선언

0

106

1

침몰하는 타이타닉(그리디) 문제 질문

0

109

1

알고리즘

0

69

1

코딩테스트

0

92

1

DFS 순서 질문드립니다.

0

126

2

left, right를 사용한 풀이법에 대한 질문입니다

0

91

1

섹션 9 Dynamic Programming (동적 계획법) 최대부분증가수열

0

117

2