본문 바로가기
프로그램/C++ 1000제

C++ 67제] vector 사용, 문제와 같은 달팽이형 사각형을 출력하시오.

by 건티 2022. 7. 26.
728x90

출처 : 반크_세계유산 창덕궁

 

문제]

25 24 23 22 21
10 9 8 7 20
11 2 1 6 19
12 3 4 5 18
13 14 15 16 17

▶ 외부변수와 함수를 사용하시오.

 

참고풀이]

#include <iostream> 
#include <vector>
#include <iomanip> //setw()
using namespace std;

int n=0;
vector<vector<int> > v;

void Quadrangle(int count, int row, int col)
{
   vector<int> vc;
   int r,c;//행열변수 
   int sw;//행열의 증감변수 
   int i,j;//반복변수 

   //vector에 초기값 0을 넣는다.
   for(r=0;r<count;r++)
   {
      for(c=0;c<count;c++)
         vc.push_back(0);
      v.push_back(vc);
      vc.clear();
   }
 
   sw=-1;
   r=row;
   c=col;
   v[r][c]=++n;
   for(i=1;i<=count;i++)
   {
      //열변환
      for(j=1;j<=i;j++)
      {
         c+=sw;
         n++;
         v[r][c]=n;
      }
      if(n>count*count) break;
      sw*=-1;

      //행변환 
      for(j=1;j<=i;j++)
      {
         r+=sw;
         n++;
         v[r][c]=n;
      }
   }
}

int main()
{
   int r,c;//행열변수

   //vector에 값을 넣는다.
   Quadrangle(5,2,2);

   //결과 출력
   for(r=0;r<5;r++) 
   {
      for(c=0;c<v[r].size();c++)
         cout << setw(3) << v[r][c];
      cout << endl;
   }

   return 0;
}

 

참고풀이 결과]

 

 

 

 

대한민국의 아름다운 영토, 독도의 봄

 

 

 

반응형

댓글