bitCode

1119

거꾸로 출력하기

바른코드 0 제출 0 성공률 0.0%

출처 · cberi:1534

문제정보

1s 128MB

문제

m개의 정수로 이루어진 수열이 있다. 이러한 수열이 n개 있을 때 각 수열은 입력된 순서대로 1번째 수열, 2번재 수열, ..., n번째 수열로 구분한다.
 
예를 들어 n=3이고, m=4일 때는 다음과 같다.
1 2 3 4 // 1번재 수열
3 2 5 2 // 2번째 수열
5 4 9 5 // 3번째 수열
또한 각 수열을 이루고 있는 수도 입력된 순서대로 왼쪽부터 1번째 수, 2번째 수, ..., m-1번째 수, m번째 수로 구분한다.
 
주어진 수열을 n번재 수열, n-1번째 수열, ..., 2번째 수열, 1번째 수열과 같이 출력하려고 한다. 또한, 각 수열을 출력할 때도 m번째 수, m-1번째 수, ..., 2번째 수, 1번째 수와 같이 출력해야 한다.
위의 수열을 규칙에 따라 출력하면 다음과 같다.
5 9 4 5
2 5 2 3
4 3 2 1
 
m개의 정수로 이루어진 수열 n개가 주어졌을 때, 위와 같은 규칙을 적용하여 거꾸로 출력하는 프로그램을 작성하시오.

입력형식

첫째 줄에 정수 nm이 주어진다. n은 수열의 개수, m은 수열을 이루는 수의 개수이다. (1n, m100)
다음 n개의 줄에는 m개의 정수 ai가 공백으로 구분되어 입력된다. (1 ai≦10,000, i=1,2,3,...,m)

출력형식

첫째 줄에는 n번째 수열, 두 번재 줄에는 n-1번째 수열, ..., n-1번째 줄에는 2번째 수열, n번째 줄에는 1번째 수열을 출력한다.
각 수열은 공백으로 구분하여 m번째 수, m-1번째 수, ..., 2번째 수, 1번째 수와 같이 출력한다.

힌트

2차원 배열은 배열의 요소로 1차원 배열을 가지는 배열이다.
int형 값을 저장하는 1차원 배열의 요소가 m개이고, 이러한 1차원 배열을 n개 가지고 있는 2차원 배열은 다음과 같이 표현할 수 있다.
int arr[n][m];
 
n이 3이고, m이 4인 2차원 배열 arr[3][4]를 표형태로 표현하면 다음과 같다. 1차원 배열의 개수가 행의 개수, 각 배열의 요소의 개수가 열의 개수가 된다.
arr[0] 배열 => arr[0][0] arr[0][1] arr[0][2]
arr[1] 배열 => arr[1][0] arr[1][1] arr[1][2]
arr[2] 배열 => arr[2][0] arr[2][1] arr[2][2]

이 문제는 각 수열을 1차원 배열로 만들어야 하고, 이러한 수열이 n개 있으므로 2차원 배열로 선언한다.
배열을 선언할 때는 입력 범위의 최대 값을 기준으로 선언해야 함에 유의한다.
마지막 행부터 출력하되, 각 행에서 마지막 요소부터 거꾸로 출력하는 코드는 다음과 같다.
for(int i=n-1; i>=0; i--){ // 2차원 배열의 행 탐색
    for(int j=m-1; j>=0; j--){ // 각 행의 열 탐색
        cout << arr[i][j] << ' ';
    }
    cout << '\n';
}

예시 1

입력예시

3 4
1 2 3 4 
3 2 5 2 
5 4 9 5 

출력예시

5 9 4 5  
2 5 2 3  
4 3 2 1 

예시 2

입력예시

1 3
1 2 3

출력예시

3 2 1