백준 - 10798번 세로 읽기(문자열, 초기화)

Kiwoong Park·2023년 5월 24일
0

문제

간단한 구현 문제로, 2D 문자 배열을 만들어서 값을 저장 후 세로로 출력하면 된다. 만약 로직이 같은데 틀렸다면 정수 배열 초기화 하듯이 문자열도 초기화가 필요하기 때문에 NULL로 초기화를 꼭 해주도록 하자

C++ 풀이

#include <bits/stdc++.h>
using namespace std;
int main(){
    char A[5][15]={'\0'}; // NULL로 문자 2d배열 초기화
    int i,j;
    for(i=0;i<5;i++) // 문자열을 아래와 같이 한번에 받을 수 있다.
        scanf("%s",A[i]); // 다만 문자열 길이가 문제와 같이 주어진 경우

    for(j=0;j<15;j++)
        for(i=0;i<5;i++)
            A[i][j]? printf("%c",A[i][j]):0;
            // 삼항연산자를 통해 값이 있으면 출력 없으면 넘어감
}

숏코딩 분석하기

로직은 같으나 1바이트라도 줄이기 위한 강한 의지가 엿보인다고 할 수 있겠다.

// 가독성을 위해 본래의 코드를 tab으로 구분하였다.
#import<ios>
char A[5][15],x; // 숏코딩의 정석인 전역변수로 선언하여 초기화를 따로 하지 않았다.
int i,j;
main(){
	while(scanf("%s",A[i++])>0); // while문으로 한번에 입력 받고
    for(;j<15;j++) // 이중 for문으로 출력하는 로직
    	for(i=0;i<5;i++)
        	(x=A[i][j])?printf("%c",x):0;}
profile
You matter, never give up

0개의 댓글