본문 바로가기

DEVELOP/Algorithm

[C] SW Expert Academy 문제풀이 :: 5356번

반응형


SW Expert Academy 5356번 의석이의 세로로 말해요 문제풀이. 간단하게 말해 배열을 세로로 출력하는 문제다. 레벨3 처음 푼 문제인데 레벨2와 차이를 못 느끼겠다. 다른 문제는 어떠려나.



문제


https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWVWgkP6sQ0DFAUO&categoryId=AWVWgkP6sQ0DFAUO&categoryType=CODE


 



풀이


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
30
31
32
33
34
#include <stdio.h>
#include <malloc.h>
 
int main() {
    int tc;
    scanf("%d"&tc);
 
    for (int t = 0; t < tc; t++) {
        char** array;
        array = (char**)malloc(sizeof(char** 5);
        for (int i = 0; i < 5; i++) {
            array[i] = (char*)malloc(sizeof(char)*15);
            for (int j = 0; j < 15; j++) {
                array[i][j] = '\0';
            }
        }
 
        for (int i = 0; i < 5; i++) {
            scanf("%s", array[i]);
        }
 
        printf("#%d ", t + 1);
        for (int j = 0; j < 15; j++) {
            for (int i = 0; i< 5; i++) {
                if (array[i][j] != NULL) {
                    printf("%c", array[i][j]);
                }
            }
        }
        printf("\n");
    }
 
    return 0;
}
cs



동적할당을 이용해 2차원 배열을 생성해준다. 그리고 배열의 모든 값을 null값으로 초기화한다. 행은 5개, 그리고 열은 최대 15줄로 제약 조건에 주어져있다.


각 행에 문자열을 입력받는다.


2중 for문을 활용해 array[i][j]를 출력해준다. 세로로 출력하는 것이므로 각 열, 즉 j에 대해 i값을 올려주면서 출력한다.

j=0일 때 i를 0~4까지, 그리고 j를 1로 올리고 i를 0부터 사까지 올리는 식.


다만 조건은 array[i][j]가 null값이 아닐 때다.

반응형