728x90
반응형
#include<stdio.h>
#include<string>
#include<vector>
#include<iostream>
using namespace std;
int main(void)
{
vector<string> v[5];
int maxIdx = 0x80000000;
for (int i = 0; i < 5; i++) {
string a;
cin >> a;
v[i].push_back(a);
if (maxIdx <(int)a.size())maxIdx = (int)a.size();//최대 길이 뽑아내기 (int) 캐스팅해야 들어감
}
for (int i = 0; i < maxIdx; i++) {
for (int j = 0; j < 5; j++) {
if ((int)v[j][0].size() <= i)continue; // 범위를 넘어서는 경우 넘김
cout << v[j][0][i];
}
}
return 0;
}
세로 읽기의 포인트는 최대 길이의 배열의 인덱스를 잘 저장하고 있다가
그 배열마다 길이가 다른경우에 continue 되게해서 넘겨서 오류가 생기지 않게 출력을 하면됩니다.
어때요 쉽지 않나요? 물론 배열로 해도되는데 벡터로 하면 좀더 간단합니다.
그리고 string으로 백터를 받을때 백터이름.size() 할때 의 숫자가 int 형이 아니고 unsigned int 여서 비교가 제대로
안되는 경우가 있으니 (int) 캐스팅 해서 사용하면 되니 걱정하지 마시고 분명히 맥스값을 뽑아내는게 식이 맞는데
안된다 싶으면 확인해서 구현하시면 됩니다.
#include<stdio.h>
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int N, M;
vector<int>v;
void init() {
scanf("%d %d", &N, &M);
for (int i = 0; i < N; i++) {
int a;
scanf("%d", &a);
v.push_back(a);
}
for (int j = 0; j < M; j++) {
int a;
scanf("%d", &a);
v.push_back(a);
}
sort(v.begin(), v.end());//벡터 정렬
for (int i = 0; i < v.size(); i++) {
printf("%d ", v[i]);// 벡터 출력
}
cout << endl;
}
int main(void)
{
init();//초기화 입력 하자마자 출력
return 0;
}
이문제는 처음에 문제를 잘 읽긴했는데 예전 버릇으로 중복은 제거해야하는 문제인지 알고 그렇게 구현했다
실패의 쓴맛을 맛본 문제네요 문제 자체는 그냥 정렬해서 출력하면되는 문제인데 순간 맨붕 탔습니다.
여러분들은 실수 하지 마시고 파이팅 ~!
728x90
반응형
'알고리즘 모음집 > 알고리즘 (Algorithm)' 카테고리의 다른 글
백준 17822 원판돌리기 (0) | 2019.11.12 |
---|---|
알고리즘 카카오 - 비밀지도, 캐시, 프렌즈4블록 (0) | 2019.11.08 |
백준 2146 다리 만들기 (0) | 2019.10.13 |
백준 2151 거울 설치 (0) | 2019.10.11 |
백준 5213 과외맨 (0) | 2019.10.11 |
댓글