백준 2775 - 부녀회장이 될테야(파이썬)

박진우·2022년 9월 7일
0

알고리즘

목록 보기
25/89

💡 백준 2775

◽ 문제




◽ 입력 & 출력




◽ 풀이

“a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다”라는 이상한 계약조항이있다.

4층 1 6 21 56 126
3층 1 5 15 35 70
2층 1 4 10 20 35
1층 1 3 6 10 15
0층 1 2 3 4 5

문제를 바탕으로 각 거주민 수를 구해보았다.

  • 1층의 2호실은 0층의 1호실 +2호실 인원

  • 1층의 3호실은 0층의 1호실 + 2호실 + 3호실을 더한 것과 같다는 것을 알 수있다.



더욱 간단하게 정리하자면 1층의 3호 를 구하려면

0층의 1호와 0층의 2호는 결국 1층의 2호 의 값과 같으므로 1층의 2호 에 현재 저장된 값인 0층의 3호 를 더하면 되는 것이다.

  • 만약에 1층,3호를 입력하면 먼저 0층을 보면 입력 받은 호수(3)으로 1부터3까지의 숫자가 0층에 저장된 것을 볼 수있다.


  • 위의 코드를 보면 1층의 3호의 인원 수를 구하려면 0층의 영향을 받는 것을 알 수있다.

  • 0층의 1,2,3인원이 있는 것을 볼 수있으며,
    1층의 2호실 은 = 3 이되고, 1층의 3호실은 = 6이 되는 것을 볼 수있다.

  • 0부터 시작해서 j에 1~2값이 들어가서 갱신되는 흐름을 살펴보면 다음과 같다

1,2,3 ➡ 1,3(1+2),3 ➡ 1,3,6(3+3)




마지막으로 3층 4호에 살고 있는 인원을 구하려면 다음과 같다

floor =3 , num =4 , j = 1~3

1층 : 1,2,3,4 ➡ 1,3,3,4 ➡ 1,3,6,4 ➡ 1,3,6,10

2층 : 1,4,6,10 ➡ 1,4,10,10 ➡ 1,4,10,20

3층 : 1,5,10,20 ➡ 1,5,15,20 ➡ 1,5,15,35

print(apt[-1]) ➡ 35


  • 즉 0층에 대한 데이터를 저장한 테이블 하나를 새롭게 계속 덮어써서 갱신하는 방법.

    마지막 수를 출력하면 해당 값인 1층 3호실이 출력된다.

0개의 댓글