1. 문제 상세
https://www.acmicpc.net/problem/10798
2. 문제 접근
최대 15*5 크기의 행렬을 입력받고, 이 행렬의 원소들을 열의 1행, 2행, .. 5행, 2열의 1행, 2행, ..5행 과 같이 출력하자.
기존에 행렬을 출력할때는 행-열 순으로 출력했는데 이번에는 열-행 순으로 출력하자.
그리고, 15*5 크기의 행렬에서 입력받지 않은 부분은 출력하지 않도록 한다.
char형 배열 선언 시 배열에 기본으로 '\0' 값이 저장된다. 따라서 출력에서 문자가 '\0' 인지 확인하고 출력한다.
(여기서 주의할 점★, char 배열을 지역변수로 선언 시 자동 초기화가 되지 않아 기본 값으로 이상한 값들이 들어간다. 따라서 선언할 때 전역변수로 선언하거나 배열을 배열[n][m] = { {}, }; 과 같이 초기화해준다. )
3. 문제 풀이
#include <iostream>
using namespace std;
char a[5][15];
int main() {
for(int i = 0; i < 5; i++) cin >> a[i];
for(int i = 0; i < 15; i++) {
for(int j = 0; j < 5; j++) {
if(a[j][i] != '\0')
cout << a[j][i];
}
}
}
크기가 5*15 인 char 형 배열 a 를 선언한다. (전역변수로 선언)
메인 함수에서 for문으로 i 가 0부터 5보다 작을 때 1씩 더하며 반복하도록 한다.
반복에서는 cin 으로 문자열을 입력받아 a 의 i 번 인덱스에 저장한다.
위 반복이 끝나면 for문으로 i 가 0부터 15보다 작을 때 1씩 더하며 반복하도록 한다. (열 기준 반복)
반복안에서 다시 for문으로 j 가 0부터 5보다 작을 때 1씩 더하며 반복하도록 한다. (행 기준 반복)
반복문에서는 if문으로 a[j][i] 의 값이 '\0' 이 아니라면 cout 으로 해당 값(문자)을 출력한다.
4. 성능 확인
5. 마무리
변수를 선언할 때, 전역변수로 선언 시 기본 값이 0으로 초기화되지만, 지역변수로 선언 시 쓰레기값들이 들어간다.
따라서 전역변수로 선언하거나 지역변수로 선언 시 원하는 기본값으로 초기화하자.
'백준 - 단계별로 풀어보기 > 2차원 배열' 카테고리의 다른 글
[백준] 2563번 : 색종이 | C++ (0) | 2023.10.13 |
---|---|
[백준] 2566번 : 최댓값 | C++ (0) | 2023.10.12 |
[백준] 2738번 : 행렬 덧셈 | C++ (0) | 2023.10.12 |