코딩 공부

[백준] 2775번 - 부녀회장이 될테야 (Java)

ZZJJing 2020. 12. 23. 00:54

부녀회장이 될테야 성공분류

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 128 MB 27918 15730 13788 57.520%

문제

평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.

이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다.

아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.

입력

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1 <= k <= 14, 1 <= n <= 14)

출력

각각의 Test case에 대해서 해당 집에 거주민 수를 출력하라.

예제 입력 1 복사

2 1 3 2 3

예제 출력 1 복사

6 10

출처


문제를 처음 읽고, 

이게 도대체 무슨소리야.. 했었던 2달전의 나 

문제를 이해를 못하니 엄청 뻘짓으로 문제를 풀다가 포기했었는데 

오늘 천천히 다시 읽어보니 

 

“a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 

라는 이야기를 떠올리면서 표를 그려봤다. 

 

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

 

이렇게 그리고 보니깐 좀 이해가 갔다. 

 

일단 나는 입력이 14층까지라서 

그냥 배열을 선언하는 얍삽한 방법을 사용.. 

이렇게 하니, 한번 2개 이상되는 입력을 받을 땐 2번째부터 정상값이 나오질 않아서 

다시 또 for문 안에서 lst[]를 초기화해주는 번거로운 짓을 할 수 밖에 없었다 ㅠㅠ 

 

이것도 정답으로 인정해주는 착한 채점기... ^^ 

그래도 아예 진행 못하던 2달전보다는 나은상황이긴한데.. ;; 

 

 

그래서 다른 포스팅을 찾아보니 

2차 배열을 이용해서 처리하는 문제였던 것 같다. 


 

(1) 2차 배열을 만든다 int[15][14]  (층/호)

(2) for문 세개로 값들을 다 넣어둔다. 

(3) 입력 받아 그 값을 (층/호)로 만들어진 2차원 배열에서 가지고 온다. 

 

2차 배열 다시 공부해서 

새로이 도전해봐야겠다.