#include <stdio.h> int dot[3][2]; double ruler(double len); int main(void) { int i, length; double result; scanf(" %d", &length); //줄자의 길이 입력 for(i=0; i<3; i++) //점의 위치 입력 scanf(" %d %d", &dot[i][0], &dot[i][1]); result=ruler((double)length); printf("%.1f", result); return 0; } double ruler(double len) { int i, j, k; double mid; for(i=0; i<3; i++) { if(dot[i][0]!=dot[i][1]) //점이 겹치지 않울 때 { mid=(double)(dot[i][0]+dot[i][1])/2.0; //점이 겹쳐지는 중점 위치 if(mid<(len-mid)) //중점을 기준으로 왼쪽보다 오른쪽이 더 길 때 { for(j=i+1; j<3; j++) //중점을 기준으로 줄자를 접고, 시작 위치는 0으로 { for(k=0; k<2; k++) { if(dot[j][k]>mid) //중점보다 오른쪽에 있거나 같은 점 dot[j][k]=len-dot[j][k]; else //중점보다 왼쪽에 있는 점 dot[j][k]+=len-(mid*2); } } len-=mid; //중점을 기준으로 접은 후 줄자의 길이 } else //중점을 기준으로 오른쪽보다 왼쪽이 더 길 때 { for(j=i+1; j<3; j++) //중점을 기준으로 줄자 접기 { for(k=0; k<2; k++) { if(dot[j][k]>mid)//중점보다 오른쪽에 있는 점 dot[j][k]=mid-(dot[j][k]-mid); //중점보다 왼쪽에 있는 점은 이동할 필요가 없다 } } len=mid; //중점을 기준으로 접은 후 줄자의 길이 } } } return len; }
2018.01.06 11:07
정올 - 실력키우기 - 줄자접기(1112)
조회 수 372 추천 수 0 댓글 0