알고리즘

10798 - 세로 읽기(백준)

WhNi 2024. 5. 29. 14:17

https://www.acmicpc.net/problem/10798

 

#include <iostream>
#include <vector>
#include <string>

using namespace std;

/*
AABCDD
afzz
09121
a8EWg6
P5h3kx
*/
int main()
{
	//세로로 데이터 읽을 vector a
	vector<string> a;

	// 입력값 받을 x 
	string x;
    // 입력값 중에서 가장 긴 문장열의 길이
	int max_Length = 0;

	// 입력값 받고 a에 추가
	for (int i = 0; i < 5; i++)
	{
		cin >> x;
		a.emplace_back(x);
		x.clear();
	}
    // a에는  "AABCDD" ,"afzz" 이런식으로 삽입

	// 가장 긴 길이값 구하기
	for (auto y : a)
	{
		if (y.size() > max_Length)
		{
			max_Length = y.size();
		}
	}
	
    //가장 긴 문자열의 길이 값 만큼 반복하면서 
	for (int i = 0; i < max_Length; i++)
	{
    	// vector a의 사이즈만큼 또 반복하기 
		for (int j = 0; j < a.size(); j++)
		{
        	// i가 문자열의 길이보다 작으면 텍스트 존재, 길면 공백
			if (i < a[j].size())
			{	
				cout << a[j][i];
			}
		}
	}

	return 0;

};

인 셈이다. 이렇게 명시적으로 보니까 좀 이해가 가는듯.