문제 링크
https://www.acmicpc.net/problem/10798
10798번: 세로읽기
총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’
www.acmicpc.net
쉬운 문제지만, 보기 쉽고 최적화를 생각하자 다짐한 기념으로 풀어보았다.
◆문제 해결 및 설명◆
문제 해설 : 5줄에 걸쳐 입력되는 문자열을 세로로 읽어서 한줄로 출력하여라.
사람이야 Board에 작성하면 세로로 보기 쉽지만, 컴퓨터는 vector의 경우 데이터 접근시 그 행을 캐싱함으로 세로로 읽는데에는 시간이 조금더 소요될 것이라고 생각했다. 따라서 한줄의 입력을 받고 이를 문자의 위치에 따라서 다른 배열에 넣어 주었다.

이렇게 완성된 배열을 차례대로 출력함으로 문제를 풀었다.
◆코드 전문◆
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> board(15);
for (int i = 0; i < 5; i++)
{
string oneLine;
getline(cin, oneLine);
for (int j = 0; j < oneLine.size(); j++)
{
board[j].push_back(oneLine[j]);
}
}
for (string oneValue : board)
{
cout << oneValue;
}
return 0;
}
'코딩 공부 > 백준(C++)' 카테고리의 다른 글
[백준 1655][C++] 가운데를 말해요 (0) | 2023.10.31 |
---|---|
[백준 2563][C++] 색종이 (0) | 2023.10.29 |
[백준 4781][C++] 사탕 가게 (0) | 2023.10.26 |
[백준 14497][C++] 주난이의 난(難) (1) | 2023.10.21 |
[백준 13549][C++] 알파벳 (1) | 2023.10.21 |