문제 푼 날짜 : 2021-09-25
문제 링크 : https://www.acmicpc.net/problem/10798
문제를 이해하는데는 크게 어렵지 않았다.
다만, vector에 입력 string들을 모두 저장해 값을 읽어오다보면 모든 string의 길이가 같다는 보장이 없기 때문에, 해당 인덱스에 값이 없는데 접근하는 경우가 생긴다. (이런 경우 알 수 없는 값을 불러오기도 한다.)
그래서 이를 해결하기 위해 각 string의 길이내에서만 접근하도록 하는 조건을 추가하여 해결할 수 있었다.(코드 내의 if (i < v[j].size()) )
// 백준 10798번 : 세로읽기
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<string> v;
string ret = "";
int maxLen = -1;
for (int i = 0; i < 5; i++) {
string str = "";
cin >> str;
maxLen = max(maxLen, (int)str.length());
v.push_back(str);
}
for (int i = 0; i < maxLen; i++) {
for (int j = 0; j < 5; j++) {
if (i < v[j].size()) {
ret += v[j][i];
}
}
}
cout << ret;
return 0;
}
쉬운 문제도 쉽게 생각말고 코드를 신중하게 구현하도록 하자.