Deff_Dev
[코드업] 지그재그 배열 3 (C++) 본문
문제
이 문제는 정수 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;
}
'코딩테스트 > 코드업' 카테고리의 다른 글
[코드업] 바둑판에 흰 돌 놓기 (C++) (0) | 2024.04.01 |
---|---|
[코드업] 일곱 난쟁이 (C++) (0) | 2024.03.31 |
[코드업] (재귀 함수) 1부터 n까지 출력하기 (C++) (0) | 2024.03.28 |
[코드업] 크레이지 아케이드 (C++) (0) | 2024.03.27 |
[코드업] 진격 후 결과 (C++) (0) | 2024.03.27 |