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ã)

8. Titanic chìm (Tham lam)

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

88

작성자 없음

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

0

n,m=map(int,input().split())
weight=list(map(int, input().split()))

left=0
right=(n-1)
cnt=0
weight.sort()

while left<=right:
  weight_sum=weight[left]+weight[right]

  if weight_sum>m:
    cnt+=1
    right-=1

  else:
    cnt+=1
    left+=1
    right-=1

print(cnt)

안녕하세요 선생님,

 

이렇게 left, right 포인터를 이용해서 풀어도 예제 문제는 모두 정답이 나오는데 혹시 이렇게 푸는 풀이도 답으로 가능할까요?

 

python 코딩-테스트

Câu trả lời 1

0

communityai8509

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

Orego.jin님이 작성하신 코드는 두 포인터 접근법을 사용하여 문제를 해결하고 있으며, 주어진 예제에서 정확한 결과를 주고 있습니다. 두 포인터 알고리즘은 특정 조건을 만족하는 경우를 찾는데 매우 효율적이며, 이진 탐색과 유사한 방식으로 문제를 해결하기 때문에 많은 경우에 유용합니다.

귀하의 코드에서는 배열을 정렬한 후, 가장 작은 값과 가장 큰 값을 비교하여 조건을 만족하지 않을 경우 큰 값을 포기하고, 조건을 만족할 경우 두 값 모두를 이동시키는 방식입니다. 이 방식은 무게 제한을 초과하지 않도록 보장하면서 가능한 많은 쌍을 찾을 수 있는 전략이기 때문에 문제의 의도한 답을 찾아낼 수 있습니다.

기본적으론 좋은 접근법이며, 사용 가능한 풀이로 인정받을 수 있습니다. 다만, 두 포인터 방식 외에도 다른 방법이 있을 수 있으니, 여러 접근법을 시도해보시는 것도 좋을 것 같습니다.

아래는 유사한 질문과 답변에 대한 링크입니다:
- 스택으로 풀어봤는데요

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

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

0

76

2

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

0

77

3

문제가 어디있나요?

0

63

2

변수 or 함수명

0

61

1

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

0

53

1

AA.py 책점 에러

0

57

1

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

0

111

2

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

0

108

1

아나그램 비교 코드

0

115

2

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

0

159

2

문제 링크가있나여?

0

147

2

채점기 Time Limit Exceeded 오류 문의

1

162

2

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

0

125

2

제 코드 좀 봐주세요

0

147

1

예외가 존재할 가능성?

0

96

1

3번이 안풀립니다

0

92

0

5번 틀림

0

113

0

오류원인?

0

97

0

리스트 선언

0

106

1

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

0

109

1

알고리즘

0

65

1

코딩테스트

0

88

1

DFS 순서 질문드립니다.

0

120

2

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

0

113

2