ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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;
    }
    

    '알고리즘 > acmicpc' 카테고리의 다른 글

    1577  (0) 2015.10.16
    1946  (0) 2015.10.16
    1931  (0) 2015.10.14
    11000  (0) 2015.10.11
    2405  (0) 2015.10.09

    댓글

Designed by Tistory.