어떻게 itertools 로 무질서 한 배열 조합 문 제 를 해결 합 니까?

최근 에 저 는 Python 초보 로 서 Codewars 를 시작 하기 시 작 했 기 때문에 여기 서 만 나 는 재 미 있 는 문 제 를 기록 하려 고 합 니 다.오늘 이 첫 번 째 문 제 는"Best Travel"입 니 다.
John 과 Mary 는 작은 마을 로 여행 을 갈 계획 이다.Mary 는 이미 이 마을 들 사이 의 거 리 를 열거 했다.예 를 들 어 ls=[50,55,57,58,60].그러나 John 은 운전 하 는 것 이 너무 피곤 하고 싶 지 않 아서 두 가지 요 구 를 했다.1)운전 은 특정한 거 리 를 초과 하지 않 는 다.예 를 들 어 t=174 miles 2)는 세 개의 작은 마을 에 만 갈 수 있다.
어느 마을 을 선택 하면 존 과 Mary 가 모두 만족 할 수 있 습 니까?즉,가장 가 깝 거나 t 와 같은 세 개의 작은 마을 을 찾 는 것 이다)
이 문 제 는 다음 과 같이 추상 화 할 수 있다.
정수 목록 ls 와 정수 t 를 입력 하 십시오:
1.ls 에서 세 가지 요 소 를 선택 한 모든 조합 을 찾 아 라.
2.각 조합의 세 가지 요소 의 합 을 계산한다.
3.t 보다 작 거나 같은 합 이 존재 한다 면 그 중에서 가장 큰 것 을 골 라 서 이 최대 와 대응 하 는 세 가지 요소 조합 을 출력 합 니 다.
4.존재 하지 않 는 다 면,없 음 으로 돌아 갈 수 밖 에 없다
실현 요점:
1.무질서 한 배열 조합:
itertools 모듈 의 combinations 방법 으로
2.구 화:
sum 함수 로
3.최대 치 구하 기:
max 함수 로
4.포획 이상:
try-except 로
이 문제 의 베 스 트 솔 루 션 을 빌려 코드 는 다음 과 같 습 니 다.

def choose_best_sum(t, k, ls):
  import itertools

  try:
    return max(sum(combination) for combination in itertools.combinations(ls, k) if sum(combination) <= t)
  except:
    return None
이상 의 이 편 이 어떻게 itertools 로 무질서 하 게 조합 을 배열 하 는 문 제 를 해결 하 는 지 는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기