백준 알고리즘 - 10798번 세로읽기 문제입니다.


(참고 - https://www.acmicpc.net/problem/10798 )



코드 )

#include <stdio.h>

#define MAX_SIZE 15

char str_read[5][MAX_SIZE];

int main() {

int i, j;

for(i=0; i<5; i++) {

scanf("%s", str_read[i]);

}

for(j=0; j<MAX_SIZE; j++) {

for(i=0; i<5; i++) {

if(str_read[i][j] == NULL)

continue;

else

printf("%c", str_read[i][j]);

}

}

printf("\n");

return 0;

}


- 먼저 char형 2차원 배열 str_read[5][15] 를 생성합니다. 그 후 배열 str_read에 문자열을 5번 입력받아서 각각 저장합니다.

그 후, str_read[0][0]의 문자를 먼저 하나 출력해줍니다. 다음으로 str_read[1][0]의 문자를 출력하고,

그 다음엔 str_read[2][0] 의 문자를 , 이와 같이 i열의 문자 먼저 출력해 준 뒤, 

다음으로 j열의 인덱스를 1 증가시켜서 str_read[1][0] -> str_read[2][1] -> str_read[3][1] -> ... 와 같이 출력해주면 세로로 읽기가 됩니다.

만약 이 때 빈 공간, 즉 NULL을 만나게 되면 다음으로 건너뛰어서(continue) 계속 진행하면 됩니다.

핵심은 굳이 2차원배열의 세로값들을 따로 제2의 배열을 만들고 옮기는 복잡한 과정을 통해 한번에 출력할 생각을 하지말고, 문자 하나씩 이동하며 바로바로 출력하면 손쉽게 된다는 것입니다.


WRITTEN BY
SiriusJ

,