새소식

반응형
알고리즘/c++

c++ 주어진 string split하여 vector에 넣기

  • -
728x90
반응형

getline함수와 istringstream 사용하는 방법

  • istringstream : 문자열을 추출해내는 작업. #include <sstream> 필요 
  • getline(istream& ls, string& str, delim) :
    • ls: 입력스트림 object
    • str: 입력받은 문자열을 저장할 string 객체
    • delim: 구분자. 아래 예에선 공백(' ')

 

#include <string>
#include <vector>
#include <sstream>
#include <string>

using namespace std;

int main(string s) {
    istringstream ss(s);
    string strBf;
    vector<string> num;

	// 구분자를 getline의 세번째 인수로 설정. 이 예에선 공백을 구분자로 설정함.
    while(getline(ss,strBf,' ')){
        num.push_back(strBf);
    }
    return 0;
}

 

응용 예 : 프로그래머스 Lv.2 - 최댓값과 최솟값

#include <string>
#include <vector>
#include <sstream>
#include <algorithm>
#include <string>

using namespace std;
string solution(string s) {
    istringstream ss(s);
    string strBf;
    vector<string> num;
    int size=0;
    int minA,maxA;

    while(getline(ss,strBf,' ')){
        num.push_back(strBf);
        size++;
    }
    for(int i=0;i<size;i++){
        if(i==0){
                minA=maxA=stoi(num[i]);
        }else{
            maxA=max(stoi(num[i]),maxA);
            minA=min(stoi(num[i]),minA);
        }
    }
    string answer = "";
    answer+=to_string(minA);
    answer+=" ";
    answer+=to_string(maxA);
    return answer;
}

https://school.programmers.co.kr/learn/courses/30/lessons/12939

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

우왕 내코드 비효율의 끝판왕 ^^

왜 sorting할 생각 못했지 ..

왜 굳이 for문 안에서 if로 조건분기처리했지 ..

 

num.clear() 해주기? 알아봐야할듯

 

아 글구 첨안 사실! str += "ㅇㅇㅇ" 하면 걍 string 연결해주는 역할 가능~

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.