-
[SWEA] 1954. 달팽이 숫자 c++Coding Test/SW Expert Academy 2022. 11. 18. 13:01728x90
- 문제
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
달팽이는 1부터 N*N까지의 숫자가 시계방향으로 이루어져 있다.
다음과 같이 정수 N을 입력 받아 N크기의 달팽이를 출력하시오.
N이 3일 경우,- 문제 해결
#include<iostream> #include <vector> using namespace std; int dx[4] = { 1, 0, -1, 0}; int dy[4] = {0, 1, 0, -1}; int main(int argc, char** argv) { int test_case; int T; cin>>T; for(test_case = 1; test_case <= T; ++test_case) { int n = 0; cin >> n; int size = n * n, dir = 0; vector<vector<int>> vec(n, vector<int>(n, 0)); vec[0][0] = 1; int i = 0, j = 0, cnt = 2; while( size >= cnt){ int nx = j + dx[dir]; int ny = i + dy[dir]; if( nx < 0 || ny < 0 || nx >= n || ny >= n || vec[ny][nx]){ dir += 1; if( dir == 4){ dir = 0; } continue; } vec[ny][nx] = cnt; cnt++; i = ny; j = nx; } cout << "#" << test_case << endl; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ cout << vec[i][j] << " "; } cout << endl; } } return 0; }
728x90'Coding Test > SW Expert Academy' 카테고리의 다른 글
[SWEA] 1946. 간단한 압축 풀기 c++ (0) 2022.11.18 [SWEA] 1948. 날짜 계산기 c++ (0) 2022.11.18 [SWEA] 1959. 두 개의 숫자열 c++ (2) 2022.11.18 [SWEA] 1961. 숫자 배열 회전 c++ (0) 2022.11.17 [SWEA] 1970. 쉬운 거스름돈 c++ (0) 2022.11.16