• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

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

23.02.16 21:38 작성 23.02.16 21:39 수정 조회수 225

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번이 잘못됐다고 나오는데 어느부분이 틀린지 모르겠습니다 ㅠㅠ