[SWEA/C++] 1954 달팽이 숫자

Hanbi·2022년 5월 12일
0

Problem Solving

목록 보기
20/108
post-thumbnail

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PobmqAPoDFAUq&categoryId=AV5PobmqAPoDFAUq&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1

풀이

배열에 숫자 채울 때 규칙이 있음
[5][5]면 5 44 33 22 11
[10][10]면 10 99 88 77 66 55 44 33 22 11

왼쪽으로 이동했다가 오른쪽으로 이동했다 방향 바꾸는 거
int turn = 1;
turn *= -1;

코드

#include <iostream>

using namespace std;

int main() {
	int test_case;
	int T;

	cin >> T;
	for(test_case = 1; test_case <= T; ++test_case) {
		int N;
		int a[10][10] = {0};
		int row = 0, column = -1; //행 인덱스, 열 인덱스 
		int num = 0; //배열에 채울 숫자 
		int turn = 1; //방향 바뀔 때 사용될 변수 
		cin >> N;
		int cnt = N; //몇 번 반복해야 하는지 알려주는 변수 
		
		while(true) {
        	//행 채움
			for(int i=0; i<cnt; i++) {
				num++;
				column += turn;
				a[row][column] = num;
			}
			
			cnt--;
			if(cnt <= 0)	break;
			
            //열 채움
			for(int i=0; i<cnt; i++) {
				num++;
				row += turn;
				a[row][column] = num;
			}
			
			turn *= -1;
		}

		cout << "#" << test_case << endl;
		for(int i=0; i<N; i++) {
			for(int j=0; j<N; j++) {
				cout << a[i][j] << ' ';
			}
			cout << endl;
		}
	}
	return 0;
}
profile
👩🏻‍💻

0개의 댓글