백준 알고리즘 3733번

백준 알고리즘 3733번 Shares

문제

N명의 그룹과 ACM 수석 판사는 동일한 수의 S 주식을 공유합니다(전부를 가질 필요는 없음). 각 사람이 취득한 주식의 수를 x라고 합니다(x는 정수여야 합니다). 문제는 x의 최대값을 계산하는 것입니다.

입력 텍스트 파일에서 정수 숫자 쌍을 읽는 프로그램을 작성합니다. 각 쌍은 1 <= N <= 10000, 1 <= S <= 109의 값을 순서대로 포함합니다. 입력 데이터는 공백으로 자유롭게 구분되고 정확하며 파일 끝으로 종료됩니다. 각 숫자 쌍에 대해 프로그램은 아래 예와 같이 x의 최대값을 계산하고 해당 값을 한 줄의 시작부터 표준 출력에 인쇄합니다.

예제

입력출력
1 100
2 7
10 9
10 10
50
2
0
0

풀이

result = []

while True:
  try:
      n, s = map(int, input().split())
      result.append(s // (n+1))
  except:
      for x in result:
          print(x)
      break
  1. x 값을 받아줄 리스트 result를 선언한다.
  2. while 반복문을 사용해서 사용자로부터 계속해서 입력을 받는다.
    1. try 블록 내에서는 사용자로부터 ns 두 개의 정수를 입력받는다.
    2. n명의 사람과 ACM 숫거 심판이 주식 S개를 공평하게 나눠 갖도록 최대값 x를 구해야 한다.
      1. 주식 S개를 n+1(n 명의 사람 + ACM 수석 심판)명이 공평하게 나눠 가져야 하므로, Sn+1로 나눈 정수 몫이 우리가 원하는 최대값 x가 된다.
* TOC {:toc}

© 2021. All rights reserved.