[백준 1654번 문제, 파이썬3] 랜선 자르기

2023. 5. 19. 13:40·정리 전 게시글/공부 관련

문제


코드

 

이분 탐색으로 작성된 코드

import sys

k, n = map(int, sys.stdin.readline().split())
lan_list = sorted([int(sys.stdin.readline()) for _ in range(k)])

max_len = max(lan_list)
min_len = 1

answer = 0

while min_len <= max_len:
    mid_len = (max_len + min_len) // 2
    count = sum([lan // mid_len for lan in lan_list])

    if count >= n:
        answer = mid_len
        min_len = mid_len + 1

    else:
        max_len = mid_len - 1

print(answer)

 

시간초과 나온 코드

import sys

k, n = map(int, sys.stdin.readline().split())
lan_list = [int(sys.stdin.readline()) for _ in range(k)]
div = sum(lan_list) / n

while True:
    div_list = [int(i / div) for i in lan_list]
    if sum(div_list) != n:
        div -= 1
    else:
        break

print(int(div))

해결

랜선의 길이를 담은 리스트를 만들고 리스트의 최댓값을 구한다.

최솟값은 1

 

최댓값과 최솟값의 중간값을 구하고 해당 값을 기준으로 랜선을 잘라서 만들 수 있는 개수를 구한다.

중간값을 각각의 랜선에 나누면 값이 나오는데 이걸 전부 더하면 몇개가 만들어지는지 알 수 있다.

 

이렇게 더해진 값이 n보다 크면 answer에 저장하고 최솟값을 중간값에 1을 더한 값으로 변경한다

n보다 작으면 최댓값을 중간값에 1을 빼서 변경한다

 

이러한 반복을 최솟값이 최댓값보다 작거나 같을 때 까지 반복해서 최종적으로 answer를 반환하면 된다

 


참고

링크

 

 

 

저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

[백준 2386번 문제, 파이썬3] 도비의 영어 공부  (0) 2023.05.19
캡스톤 디자인 앱 만들기 My Walking Pet #0  (0) 2023.05.19
[백준 2751번 문제, 파이썬3] 수 정렬하기 2  (0) 2023.05.19
[백준 15829번 문제, 파이썬3] Hashing  (0) 2023.05.19
[백준 2869번 문제, 파이썬3] 달팽이는 올라가고 싶다  (1) 2023.05.18
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • [백준 2386번 문제, 파이썬3] 도비의 영어 공부
  • 캡스톤 디자인 앱 만들기 My Walking Pet #0
  • [백준 2751번 문제, 파이썬3] 수 정렬하기 2
  • [백준 15829번 문제, 파이썬3] Hashing
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (277) N
      • f1tenth (2)
      • 개발 관련 아무거나 (1) N
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    이것이자바다확인문제
    파이썬
    티스토리스킨편집
    c언어초보
    티스토리반응형2스킨편집
    마크스크립트
    백준
    C++강좌
    빅데이터공모전
    티스토리HTML
    마인크래프트스크립트
    스크롤바CSS
    자바
    캡스톤디자인
    안드로이드
    마인크래프트
    프로그래머스PCCE
    일본규슈공업대학교
    파이어베이스
    반복하지않는수
    이것이자바다연습문제
    콜라츠추측
    이것이자바다
    마크
    C언어강좌
    프로그래머스
    공개SW개발자대회
    컨텍스트스위칭
    마인크래프트강화스크립트
    C언어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[백준 1654번 문제, 파이썬3] 랜선 자르기
상단으로

티스토리툴바