HelloMinchan
처음처럼
HelloMinchan
LinkedIn
전체 방문자
오늘
어제
  • 분류 전체보기 (306)
    • Backend (4)
      • NestJS (1)
      • Express (1)
      • Spring (2)
    • Infrastructure (1)
      • AWS (1)
    • Frontend (1)
      • Next.js (1)
    • Language & Runtime (4)
      • Java (2)
      • Node.js (2)
    • Computer Science (8)
      • Computer Networks (3)
      • Operating Systems (4)
      • OOP (1)
    • 독서 (4)
      • 데이터 중심 애플리케이션 설계 (3)
      • 객체지향의 사실과 오해 (1)
    • 회고 (4)
      • Project (2)
      • Career (2)
    • Deprecated (280)

채널

  • GitHub
  • LinkedIn

최근 글

태그

  • 백준Python
  • 프로그래머스C++
  • 프로그래머스Python
  • 개발자
  • 알고스팟Python
  • 데이터베이스
  • programmers
  • 백준
  • 코딩
  • back-end
  • 백준Go
  • 백엔드
  • front-end
  • Algospot
  • 프로그래머스
  • Database
  • Baekjoon Online Judge
  • 알고스팟
  • 프로그래밍
  • 백준C++

최근 댓글

인기 글

hELLO
HelloMinchan

처음처럼

[Baekjoon Online Judge] 백준 1654번 랜선 자르기(Python)
Deprecated

[Baekjoon Online Judge] 백준 1654번 랜선 자르기(Python)

2020. 4. 6. 21:08

© 2020 All Rights Reserved. 주식회사 스타트링크

[Baekjoon Online Judge] 백준 1654번 랜선 자르기

(Python)

(글쓴날 : 2020.04.06)

 


* Baekjoon Online Judge, 백준 1654번 문제 Python 언어 풀이입니다.

* 소스 코드의 저작권은 글쓴이에게 있습니다.


 

 

백준 1654번 랜선 자르기


1) 문제

문제 링크 : https://www.acmicpc.net/problem/1654

 

1654번: 랜선 자르기

첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 후 K줄에 걸쳐 이미 가지고 있는 각 랜선의 길이가 센티미터 단위의 정수로 입력된다. 랜선의 길이는 231-1보다 작거나 같은 자연수이다.

www.acmicpc.net


2) 풀이 과정

길이가 각기 다른 랜선들이 주어지고 얻고자 하는 랜선의 개수가 주어질 때, 랜선의 개수를 만족하는 최대 랜선의 길이를 출력하는 문제입니다.

 

저의 경우, 이분 탐색의 파라메트릭 서치를 적용해 문제를 해결하였습니다.

한 가지 주의해야 할 점이 있었는데, 최소 길이를 1부터 시작해야 0으로 나누는 연산을 피할 수 있습니다.

(1, 1 1과 같은 케이스의 경우 mid가 0이 돼버리므로 ZeroDivisionError가 발생합니다.


3) 코드

 

* Python 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import sys
input = sys.stdin.readline
 
K, N = map(int, input().split())
lans = [int(input()) for _ in range(K)]
 
left = 1
right = max(lans)
 
while left <= right:
    processdLans = 0
    mid = (right + left) // 2
 
    for lan in lans:
        processdLans += lan // mid
 
    if N <= processdLans:
        result = mid
        left = mid + 1
    else:
        right = mid - 1
        
print(result)

 

저작자표시 비영리 변경금지

'Deprecated' 카테고리의 다른 글

[Baekjoon Online Judge] 백준 2110번 공유기 설치(Python)  (0) 2020.04.07
[Baekjoon Online Judge] 백준 2512번 예산(Python)  (0) 2020.04.06
[Baekjoon Online Judge] 백준 2805번 나무 자르기(Python)  (0) 2020.04.04
[Baekjoon Online Judge] 백준 9663번 N-Queen(Python)  (1) 2020.04.04
[Baekjoon Online Judge] 백준 14888번 연산자 끼워넣기(Python)  (5) 2020.04.03
    'Deprecated' 카테고리의 다른 글
    • [Baekjoon Online Judge] 백준 2110번 공유기 설치(Python)
    • [Baekjoon Online Judge] 백준 2512번 예산(Python)
    • [Baekjoon Online Judge] 백준 2805번 나무 자르기(Python)
    • [Baekjoon Online Judge] 백준 9663번 N-Queen(Python)
    HelloMinchan
    HelloMinchan
    Though you should not fear failure, You should do your very best to avoid it.

    티스토리툴바