programming

[C++] 백준 10798: 세로 읽기

Mysteryu 2023. 6. 20. 19:07

풀이

문자열의 배열을 이용하여 푸는 문제다.

1). 문자열은 5개를 입력받는 것이 디폴트이기 때문에 먼저 반복문을 이용하여 문자열을 생성하였다. 이때 문자열들 중 가장 긴 길이를 측정한다.

2). 반복문에 사용할 k라는 변수를 초기화한다. 먼저 while문을 선언하여 k가 1)에서 구한 최대 문자열 길이 값을 넘으면 반복문은 종료된다. k라는 변수는 이차원 배열의 두 번째 element의 접근에 쓰인다

3). while문 안에 for문을 선언한다. 이때 정의되는 변수는 이차원 배열의 첫 번째 element를 접근하는데 쓰인다

4). 만약 어떤 문자열의 길이 -1 이 k보다 작다면 이때는 해당 배열값에 아무값도 없기 때문에 출력하지 않는다.

 

#include <iostream>
#include <string>

int main() {
	std::string s[5];
	int max_length = 0;

	for (int i = 0; i < 5; i++) {
		std::cin >> s[i];
		if (max_length < s[i].length())
			max_length = s[i].length();
	}

	int k = 0;
	
	while (k < max_length) {
		for (int j = 0; j < 5; j++) {
			if (s[j].length() - 1 >= k) {
				std::cout << s[j][k];
			}
		}
		++k;
	}
	std::cout << "\n";
}