1. istringstream 과 getline 함수를 이용하는 것이 가장 빠를 것이라 생각하여 하나를 확실하게 알고자 한다. (다양한 방법론을 모두 검색해본 결과 코드가 간략했으므로 해당 방법을 암기하고자 한다.)
#include<sstream>
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
using namespace std;
int main()
{
string s = "string with space has to be splited";
istringstream is(s);
string buf;
while (getline(is, buf, ' '))
{
cout << buf << " ";
}
return 0;
}
//출력 결과
string with space has to be splited
1) sstream 헤더를 선언 한다.
2) istringstream에 string 값을 담는다. (문자열 포맷을 parsing 시 활용한다.)
3) getline 함수를 이용하여 제외할 문자를 마지막 인자로 담고, 들어갈 값을 가운데 인자에 담아 준다.
무식한 방법으로 2021 Kakao Blind 순위 검색 문제를 for문을 이용해서 풀어 보았다. 비록, map을 사용하지 않아 시간복잡도에서 실패했지만, 문자열 split을 해낸 것에 일단은 만족하며, 완전탐색을 활용한 코드를 기록용으로 남기고자 한다.
#include <string>
#include <vector>
#include <sstream>
using namespace std;
vector<int> solution(vector<string> info, vector<string> query) {
vector<int> answer;
vector<pair<string,pair<string,pair<string,pair<string,int>>>>> vec;
vector<pair<string,pair<string,pair<string,pair<string,int>>>>> vec2;
for(int i=0; i<info.size();i++){
istringstream is(info[i]);
string buffer;
int cnt=0;
vector<string> e;
while(getline(is,buffer,' ')){
e.push_back(buffer);
}
vec.push_back({e[0],{e[1],{e[2],{e[3],stoi(e[4])}}}});
}
for(int i=0; i<query.size();i++){
istringstream is(query[i]);
string buffer;
vector<string> e;
while(getline(is,buffer,' ')){
e.push_back(buffer);
}
vec2.push_back({e[0],{e[2],{e[4],{e[6],stoi(e[7])}}}});
}
for(int i=0; i<vec2.size();i++){
int count=0;
for(int j=0; j<vec.size();j++){
if(vec2[i].first==vec[j].first || vec2[i].first=="-"){
if(vec2[i].second.first==vec[j].second.first|| vec2[i].second.first=="-"){
if(vec2[i].second.second.first==vec[j].second.second.first|| vec2[i].second.second.first=="-"){
if(vec2[i].second.second.second.first==vec[j].second.second.second.first|| vec2[i].second.second.second.first=="-"){
if(vec2[i].second.second.second.second<=vec[j].second.second.second.second){
count++;
}else{
continue;
}
}else{
continue;
}
}else{
continue;
}
}else{
continue;
}
}else{
continue;
}
}
answer.push_back(count);
}
return answer;
}
'Coding_Test_C++' 카테고리의 다른 글
Programmers Level 2: 큰 수 만들기(C++) (0) | 2021.10.07 |
---|---|
BaekJoon 2140번: 지뢰찾기(C++) (0) | 2021.10.05 |
Programmers Level 2: 2019 카카오 개발자 겨울 인턴십 튜플(C++) (0) | 2021.10.03 |
BaekJoon 1946번: 신입 사원(C++) (0) | 2021.09.30 |
BaekJoon 1474번: 밑 줄(C++) (0) | 2021.09.25 |