티스토리 뷰
728x90
반응형
백준 온라인 저지(BOJ) 2775번 부녀회장이 될테야
https://www.acmicpc.net/problem/2775
* 사용언어 : C언어, C++
1. 문제
한 아파트에 거주하려면 다음 조건을 만족해야 함
"a층의 b호에 살려면 (a-1)층 1호부터 b호까지 사람들의 수의 합만큼 데리고 살아야 함"
이때 k층 n호에는 몇 명이 살고 있는지 출력 (0층의 i호에는 i명이 살고 있음)
2. 풀이
문제가 상식적으로 말이 안돼서 처음에 해석할 때 좀 어려웠습니다.
난해한 문제 내용에 비해 규칙과 풀이는 간단했습니다.
0층의 1호는 1명, 2호는 2명, ... 14호에는 14명이 삽니다.
1층의 1호는 1명 (0층 1호)
1층의 2호는 3명 (0층 1호 + 0층 2호)
2층의 3호는 6명 (0층 1호 + 0층 2호 + 0층 3호)
...
입니다.
그리고 또 2층에서 같은 방식의 연산을 반복하면 됩니다.
층과 호수로 이루어진 아파트 모양의 2차원 배열을 선언하고,
위와 같은 연산을 1층부터 k 층까지 반복하면 답을 구할 수 있습니다.
불필요한 연산을 최소화하기 위해 14호가 아닌 n 호까지만 계산했고,
다음 Test Case 에서 재활용할 수 있게 값이 있으면 skip 하는 방식을 사용했습니다.
(동적할당법의 메모이제이션과 동일한 방식입니다)
3. 코드
#include <stdio.h>
int main() {
int t;
scanf("%d", &t);
int arr[15][15] = { 0, };
for (int i = 1; i < 15; ++i) {
arr[0][i] = i;
}
int k, n;
for (int i = 0; i < t; ++i) {
scanf("%d %d", &k, &n);
for (int y = 1; y <= k; ++y) {
for (int x = 1; x <= n; ++x) {
if (arr[y][x]) continue;
for (int j = 1; j <= x; ++j) {
arr[y][x] += arr[y - 1][j];
}
}
}
printf("%d\n", arr[k][n]);
}
return 0;
}
728x90
반응형
'개발자 > 문제풀이 (C언어)' 카테고리의 다른 글
[백준/BOJ] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 (C/C++) (0) | 2022.11.26 |
---|---|
[백준/BOJ] 3678번 카탄의 개척자 (C/C++) (0) | 2022.11.23 |
[백준/BOJ] 10250번 ACM 호텔 (C/C++) (0) | 2022.07.25 |
[백준/BOJ] 2869번 달팽이는 올라가고 싶다 (C/C++) (0) | 2022.07.22 |
[백준/BOJ] 1193번 분수찾기 (C/C++) (0) | 2022.07.10 |
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 유연함의힘
- 정올
- JUNGOL
- 관계가상처가되기전에
- 동탄에듀센터
- 세상을 읽는 새로운 언어 빅데이터
- 독서 감상평
- 동탄에듀센터2
- 정세현의통찰
- 나의첫죽음학수업
- 삼성전자
- 최재천의공부
- 긴 자리 곱셈
- 자료구조
- 알고리즘
- 시대예보
- 인간본성불패의법칙
- 여가포인트
- 자동차보험
- 호암의마지막꿈
- AdSendse
- 나는늘잘해야한다고생각한다
- 문현공
- 쿠프마케팅
- 긴 자리 덧셈 뺄셈
- 영화감상평
- 당신도느리게나이들수있습니다
- 독서감상평
- 안전운전특약
- 센터독서클럽
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함