-
2590알고리즘/acmicpc 2015. 10. 15. 11:34
처음에는 엄청 어려운 문제인줄 알았다... 색종이가 판의 경계에도 놓일 수 있다면 이건 정말 어려운 문제고 초딩용으로는 전혀 적합하지 않은 문제라 생각했다..
그런데 문제를 꼼꼼히 읽어보니 하나의 색종이는 하나의 판에만 놓일 수 있다는 조건을 확인했다. 그러면 문제가 정말 쉬워진다. 색종이 큰 것 부터 탐색하고 남는 것들을 채워나가는 식으로 하면 된다.
이런 문제는 코드를 깔끔이 짜는것이 관건이다. 잘못하다간 자신도 코드를 알아보지 못하는 경우가 있기 때문이다. 반드시 수기 작업에서 변수명까지 선언해준 후 컴퓨터로 옮기도록 하자
#include<cstdio> int main(){ int d[7]; for(int i=1; i<7; i++) scanf("%d", &d[i]); int res=0; for(int cur=6; cur>0; cur--){ while(d[cur]!=0){ res++; int rem = 36 - cur*cur; d[cur]--; int end = 6-cur; for(int piv=end; piv>0 && rem>0; piv--){ while(d[piv]>0 && rem>0){ if(rem >= piv*piv) { rem -= piv*piv; d[piv]--; } else break; } } } } printf("%d\n", res); return 0; }