※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀 더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소입니다.
https://codeup.kr/problem.php?id=1476
1. 문제
2. 문제 해석
3. 소스 코드
문제
다음과 같은 n*m 배열 구조를 출력해보자. |
입력
첫 번째 줄에 배열의 크기 n m이 입력된다. |
출발
n*m 크기의 배열을 설명과 같이 채워 출력한다. |
입력 예시
2 3 |
출력 예시
1 3 5 2 4 6 |
2. 문제풀이
이 문제는 기초문제인데 생각보다 어려웠습니다. 프로그래머스 문제를 풀기전에 머리풀기 용으로 하나씩 하고있는데 어떻게 접근을 해야하나 고민을 많이했습니다. 결론은 자리수를 이용한 계산입니다. 여기서 원하는 배열은 왼쪽위부터해서 오른쪽위로 올라가는 구조입니다 00 01 02 잘보시면 자리수를 더하면 같은수가 나옵니다. 처음은 0 두번째는 1, 세번째는 2 마지막은 4입니다. 다른 수들도 바꿔가며 계산을 해보았더니 n+m -2까지의 자리수가 나오는것을 확인했습니다. 따라서 아래의 코드가 나오게 되었습니다. |
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
26
27
28
29
|
#include <iostream>
using namespace std;
int main() {
int a[100][100], n, m;
bool check{ true };
cin >> n >> m;
//자리수를 더하면 같은수가 나온다.
for (int j = 0, count = 1; j <= n + m - 2; j++) {
//열 반복
for (int i = 0; i < m; i++) {
//행 반복
for (int k = 0; k < n; k++) {
//행과 열의 합이 j와 같다면 count 넣고 증가시키기
if (i + k == j) {
a[k][i] = count++;
break;
}
}
}
}
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-3 C++(1478)[code up,코드업] (0) | 2019.12.21 |
3의 배수 판별하기 C++(1990)[코드업,code up] (2) | 2019.12.19 |
댓글