https://www.acmicpc.net/problem/10798
문제 요약
최대 15자 까지 입력받을 수 있는 문자열 5개가 있습니다 이를 세로로 읽으려고 합니다.
Aa0aPAf985Bz1EhCz2W3D1gkD6x
세로로 읽을 때 해당 자리의 글자가 없으면, 읽지 않고 그
다음 글자를 계속 읽습니다.
문제 풀이
1. 입력 받을 char 2차원 백터와 string 변수를만듭니다.
2. cin은 공백 없이 입력받으면 하나의 문자열로 입력받기 때문에 string으로 받서 char 백터에넣어줍니다.
3. 입력과 반대로 세로로 출력해야 하므로 열을 출력하도록 반복문을 뒤집어서 만듭니다.
4. 조건으로 '\0' ( NULL 문자열이 끝났음을 의미 )이면 continue하여 다음 줄로 이동하도록 합니다.
주의할 점
출력할때는 세로로 읽어야 하기때문에 반복문을 뒤집어서 작성해야합니다.
또한 '\0'일경우 다음 글자는 읽어야 하기 때문에 continue 처리 해야합니다.
코드
#include<iostream>
#include<vector>
using namespace std;
string s;
vector<vector<char>>v;
int main()
{
v.resize(5, vector<char>(15));
for (int i = 0; i < 5; i++)
{
cin >> s;
for (int j = 0; j < s.length(); j++)
{
v[i][j] = s[j];
}
}
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 5; j++)
{
if (v[j][i] == '\0')
{
continue;
}
cout << v[j][i];
}
}
return 0;
}
반응형
예제 1
ABCDE
abcde
01234
FGHIJ
fghij
결과 1
예제 2
AABCDD
afzz
09121
a8EWg6
P5h3kx
결과 2
'BAEKJOON > String' 카테고리의 다른 글
C++ / 2852 / NBA 농구 ( 문자열 ) (0) | 2025.04.03 |
---|---|
C++ / 1652 / 누울 자리를 찾아라 ( 문자열 ) (0) | 2024.11.25 |