[백준] 10798번 : 세로읽기

박개발·2021년 9월 25일
0

백준

목록 보기
34/75
post-custom-banner

문제 푼 날짜 : 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;
}

결과

피드백

쉬운 문제도 쉽게 생각말고 코드를 신중하게 구현하도록 하자.

profile
개발을 잘하고 싶은 사람
post-custom-banner

0개의 댓글