Deff_Dev

[코드업] 지그재그 배열 3 (C++) 본문

코딩테스트/코드업

[코드업] 지그재그 배열 3 (C++)

Deff_a 2024. 3. 29. 18:31
 

지그재그 배열 3

하나의 정수 n을 입력받아 n*n사각형에서 다음과 같은 삼각형 모양으로 지그재그로 출력하시오. 예를 들어, n이 5이면, 0 0 0 0 5 0 0 0 4 6 0 0 3 7 12 0 2 8 11 13 1 9 10 14 15 를 출력한다.

codeup.kr

 

문제

이 문제는 정수 n을 입력받아 n * n 사각형을 만들 때, 다음과 같은 삼각형 모양으로 지그재그로 출력하는 문제이다.

 

n이 5일때,

 

0 0 0 0 5
0 0 0 4 6
0 0 3 7 12
0 2 8 11 13
1 9 10 14 15

 

왼쪽 아래에서 오른쪽 위로 올라간 후 다시 왼쪽 아래로 내려오는 것을 반복한다.

 

풀이

while 문과 bool 변수 isRight를 이용하여 isRight가 true일 때 오른쪽 위로 가고, false일 때 왼쪽 아래로 가는 방식으로 풀이했다.

#include <iostream>

// https://codeup.kr/problem.php?id=1513

using namespace std;

int map[100][100] = { 0, };
int main() {
	int n; // n 입략
	cin >> n;

	int x = n, y = 1, num = 1; // 시작 x,y 좌표, 숫자
	bool isRight = true; // 오른쪽 위로 가는지
	while (true)
	{

		map[x][y] = num++; // 현재 좌표에 숫자 기입

		if (x == n && y == n) { // 마지막 좌표일 때
			break;
		}


		if (isRight) { // 오른쪽 위로 가면
			if (y == n) { // 오른쪽 끝일 때
				x++;
				isRight = false;
			}
			else { // 오른쪽 위로 이동
				x--;
				y++;
			}
		}
		else { // 왼쪽 아래로 가면
			if (x == n) { // 왼쪽 끝일 때
				y++;
				isRight = true;
			}
			else { // 왼쪽 아래로 이동
				x++;
				y--;
			}
		}

	}

	for (int i = 1; i <= n; i++) { // 출력
		for (int j = 1; j <= n; j++) {
			cout << map[i][j] << " ";
		}
		cout << endl;
	}

	return 0;
}

 

 

 

CodingTestPractice/CodeUp/2차원 배열/지그재그 배열 3.cpp at main · seungdo1234/CodingTestPractice

코딩 테스트 연습. Contribute to seungdo1234/CodingTestPractice development by creating an account on GitHub.

github.com