(백준 알고리즘 문제풀이) 2163번 초콜릿 자르기
by 줌코딩
문제
어떻게 접근할 것인가
- 이 문제은 디피로 접근할 수 있는 문제이다.
- 일단 세로든 가로든 자르는 횟수를 모두 찾고 어느걸 먼저 자르는게 더 적은지 비교해서 출력한다.
- 자르는 횟수는 어레이에 저장하면서 계산한다.
코드
#include <cstdio>
int n, m, x[2][301], cnt[2];
int main(){
scanf("%d %d", &n, &m);
x[0][n] = 1, x[1][m] = 1;
for(int i = 0; i < 2; i++){
for(int j = 300; j > 1; j--){
if(!x[i][j])continue;
x[i][j/2] += x[i][j], x[i][j - j/2]+= x[i][j];
cnt[i]+= x[i][j];
}
}
int nfirst = cnt[0] + cnt[1]*n, mfirst = cnt[1] + cnt[0]*m;
printf("%d", mfirst > nfirst ? nfirst : mfirst);
}
느낀점
- 잘 접근한 것에 감사하다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Subscribe via RSS