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

코딩코딩코딩코님의 프로필 이미지
코딩코딩코딩코

작성한 질문수

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

8. 침몰하는 타이타닉(그리디)

print()부분에서 어느부분이 틀린지 이해가 가지않습니다.

작성

·

269

·

수정됨

0

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

data = list(map(int, input().split()))
sum = 0
cnt = 0
data.sort()
lt = 0
rt = len(data)-1
print(data)
while lt<=rt:
    if data[lt] + data[rt] <= m:
        cnt += 1
        lt += 1
        rt -= 1
    else:
        rt -= 1
print(len(data)-(cnt*2) + cnt)

print는 전체 data갯수에서 2명끼리 탄사람들의 개수를 뻬면
보트를 혼자타는 사람들의 갯수가 나오겠다고 생각했습니다.
그다음 2명이서타는 cnt의 개수를 더해주면 답이 될것이라고 생각하였는데 답이 되지않습니다.
왜틀린걸까요?

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

답이 틀리게 나오는 입력을 가지고 스스로 디버그 해보세요. 이런 건 스스로 찾아야 실전에 강해집니다.

힌트를 드리자면 마지막 사람이 한 사람 남아 있을 때 즉 lt와 rt가 같을 때 예외가 발생할 수 있습니다.

디버깅을 해보았습니다. 오ㅐ 오류가 발생하는지 모르겠습니다.

강의 예제도 보면 lt와 rt가 같을때 종료되는 것을 알 수 있는데 결과는 잘 나옵니다. 하지만 예제3번과 5번이 잘못됐다고 나오는데 어느부분이 틀린지 모르겠습니다 ㅠㅠ

코딩코딩코딩코님의 프로필 이미지
코딩코딩코딩코

작성한 질문수

질문하기