BoJ 15842 - Virus Outbreak [with Python / 문제 한국어로 번역]

ssook·2023년 9월 7일
0

BoJ 문제기록

목록 보기
11/29
post-thumbnail

📍 문제

문제

최근에 발견된 새로운 소 감염병을 국립 수의학 연구소 보건부가 발표했습니다.
질병에 감염된 것으로 확인된 모든 소들은 축산업에 위협을 줄 수 있다고 간주하고, 이로 인해 안락사되었습니다.
감염된 소의 수는 8시간, 9시간, 10시간 후에 각각 21, 34, 55로 증가했습니다.

당신은 이 발병 패턴을 연구하고 국가 당국이 준비하고 대응할 수 있도록 해야 합니다. 따라서 그 이후에 영향을 미칠 소의 수를 예측하기 위한 프로그램을 개발하는 과제를 맡았습니다.

입력

입력은 각각 별도의 줄에 나열됩니다.
각 줄의 수들은 490 이하의 양의 정수로 이루어진 일련의 시간으로 구성됩니다.
-1을 포함하는 줄을 만나면 해당 입력과정은 종료됩니다.

출력

각 입력 값에 대해 출력은 다음 형식으로 작성되어야 합니다.

"Hour X: Y cow(s) affected"

여기서 X는 시간이고 Y는 X 시간에 따라 안락사되어야 하는 전체 감염된 소의 수입니다.


📍 아이디어

간단한 피보나치 수 문제.
다만 다른 피보나치 수 문제들이 실버5 ~ 브론즈1로 레이팅되어 있는데, 이 아이만 브론즈2로 낮은 레이팅을 받아 왜 그런가 했더니...
입력 범위가 정해져 있었다.
아무튼,

fibo[n] = fibo[n-1] + fibo[n-2]

만 제대로 기억해두면
쉽게 구현할 수 있는 문제.


📍 제출 코드


def fib(n):
  if n <= 2:
    if n == 0 or n == 1:
      return 1
    elif n == 2:
      return 1

  if n > 2:
    fibo = [0] * (n+1)

    fibo[0] = 1
    fibo[1] = 1
    fibo[2] = 2

    for i in range(3, n+1):
      fibo[i] = fibo[i-1] + fibo[i-2]
    
    return fibo[n-1]

while True:
  num = int(input())

  if num == -1:
    break
  
  else:
    n = fib(num)
    print("Hour %d: %d cow(s) affected" %(num, n))
profile
개발자에서, IT Business 담당자로. BrSE 업무를 수행하고 있습니다.

0개의 댓글