※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀 더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소입니다.
https://codeup.kr/problem.php?id=1478
1. 문제
2. 문제 해석
3. 소스 코드
문제
다음과 같은 n*m 배열 구조를 출력해보자. |
입력
첫 번째 줄에 배열의 크기 n m이 입력된다. |
출력
n*m 크기의 배열을 설명과 같이 채워 출력한다. |
입력 예시
2 3 |
출력 예시
4 2 1 6 5 3 |
2. 문제풀이
0부터 시작하기때문에 m+n에 -2가 필요합니다. 시작은 제일오른쪽열부터 시작하며 오른쪽 아래로 진행하는 방향입니다. 오른쪽부터 왼쪽으로 가는 반복문이 제일 안쪽에 위에서부터 아래로 가는 반복문이 그 위에 있어야 합니다. 규칙은 i+m-1-k가 j와 같을때 count를 증가시키며 숫자를 넣어주시면 되니다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include <iostream>
using namespace std;
int main() {
int a[100][100], n, m;
cin >> n >> m;
for (int j = 0, count = 1; j <= n + m - 2; j++) {
for (int i = 0; i < n; i++) {
//제일 오른쪽 열부터 시작한다.
for (int k = m - 1; k >= 0; k--) {
//규칙을 찾으면 m- 1 -k +i를 하면 규칙적인 합이나온다.
if (i + (m - 1 - k) == j) {
a[i][k] = count++;
}
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
cout << a[i][j] << " ";
cout << endl;
}
return 0;
}
|
'코딩테스트 > 코드업' 카테고리의 다른 글
2차원 누적 합 배열 만들기 5-2 C++(1493)[코드업, code up] (0) | 2019.12.24 |
---|---|
2차원 배열 달팽이 채우기 4-3 C++(1486)[코드업, code up] (0) | 2019.12.23 |
2차원 배열 달팽이 채우기 4-1 C++(1484)[코드업, code up] (0) | 2019.12.22 |
2차원 배열 빗금 채우기 3-1 C++(1476)[코드업, code up] (0) | 2019.12.19 |
3의 배수 판별하기 C++(1990)[코드업,code up] (2) | 2019.12.19 |
댓글