본문 바로가기
IT/[Everyday]Coding

사각형그리기2

by Jang HyunWoong 2014. 12. 19.

사각형그리기2
Time Limit : 1000MS


정사각형의 한 변의 길이 n과 종류 m을 입력받은 후 다음과 같은 정사각형 형태로 출력하는 프로그램을 작성하시오.

< 처리조건 >
종류 2번의 경우 숫자의 진행 순서는 처음에 왼쪽에서 오른쪽으로 너비 n만큼 진행 한 후 방향을 바꾸어서 이를 반복한다.


정사각형 한 변의 길이 n(n의 범위는 100 이하의 정수)과 종류 m(m은 1부터 3사이의 정수)을 입력받는다.


위에서 언급한 3가지 종류를 입력에서 한 변의 길이 n과 종류 m에 맞춰서 출력한다. 숫자 사이는 공백으로 구분하여 출력한다.


3 2


1 2 3 
3 2 1 
1 2 3


4 3


1 2 3 4 
2 4 6 8 
3 6 9 12 
4 8 12 16

 

<source code>

 

  1. #include <stdio.h>
  2. int main()
  3. {
  4. FILE *inFp = fopen("input.txt", "r");
  5. FILE *outFp = fopen("output.txt", "w");
  6. int n, m;
  7.  
  8. if(!inFp || !outFp)
  9. {
  10. printf("File Error!\n");
  11. return 0;
  12. }
  13. fscanf(inFp, "%d %d", &n, &m);
  14.  
  15. switch (m)
  16. {
  17. case 1:
  18. for(int i=1; i<=n; i++)
  19. {
  20. for(int j=1; j<=n; j++)
  21. {
  22. fprintf(outFp, "%d ", i);
  23. }
  24. fprintf(outFp, "\n");
  25. }
  26. fprintf(outFp, "\n");
  27. break;
  28.  
  29. case 2:
  30. for(int i=1; i<=n; i++)
  31. {
  32. for(int j=0; j<n; j++)
  33. {
  34. if(i%2)
  35. {
  36. fprintf(outFp, "%d ", j+1);
  37. }else{
  38. fprintf(outFp, "%d ", n-j);
  39. }
  40. }
  41. fprintf(outFp, "\n");
  42. }
  43. fprintf(outFp, "\n");
  44. break;
  45.  
  46. default:
  47. int s=0;
  48. for(int i=1; i<=n; i++)
  49. {
  50. fprintf(outFp, "%d ", i);
  51. s = i;
  52. for(int j=1; j<n; j++)
  53. {
  54. s = s + i;
  55. fprintf(outFp, "%d ", s);
  56. }
  57. fprintf(outFp, "\n");
  58. }
  59. break;
  60. }
  61.  
  62. fclose(inFp);
  63. fclose(outFp);
  64. return 0;
  65. }

 

switch 문을 사용해서 입력 숫자 1~3을 구분한다. 

for문을 두번 사용했기 때문에 시간복잡도가 상당히 증가할 것이다. 

O(n^2)

반응형

'IT > [Everyday]Coding' 카테고리의 다른 글

딥러닝_Neural Network_서론  (0) 2014.12.19
퀵정렬 (Quick Sort)  (0) 2014.12.19
사각형그리기1  (0) 2014.12.19
파스칼 삼각형  (0) 2014.12.19
[피보나치 수열]  (0) 2014.12.19