티스토리 뷰

카테고리 없음

1535 단어집합2 (정올)

rectified 2024. 12. 29. 19:15

 

풀이과정

 

3단계로 나눈다

1. 먼저 인풋을 라인으로 받고 공백이 생길때마다 파싱을 해줘야함

2. 파싱된 단어들을 벡터에 담고 또 다른 벡터에 그 단어가 존재하는지 여부 확인 후 없으면 더해주기, 있으면 추가하지 않음. 

3. 다른 벡터의 원소들을 출력, 다만 i가 size -1 즉 단어의 끝이아니라면 각 단어 출력마다 공백을 더해줌.

 

코드

 

#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> si;
bool exists(string w){

    for (auto i : w){
        for (auto j : si){
            if (w == j){
                return true;
            }
        }
    }
    return false;
}
vector<string> parse_by_spaces(const string &s) {
    // s = "I am a boy"
    // res = ["I", "am", "a", "boy"]
    vector<string> res;
    string word;
    for (char c: s){
        if (c == ' '){
            if (!word.empty()){
                res.push_back(word);
                word.clear();
            }
        }else{
            word += c;
        }
    }

    if (!word.empty()){
        res.push_back(word);
    }

    return res;
}

int main(){
    
    while (true){
        string v;
        getline(cin , v);
        
        if (v == "END"){
            break;
        }
        
        //s 를 공백 단위로 쪼개는 task V
        //si -> 공백 단위로 쪼개진 Word들(I,am,a) 
        
        vector<string> words = parse_by_spaces(v);

        for (auto word : words){
        if (!exists(word)){
            si.push_back(word);
        }
        }

        for (int i = 0; i < si.size(); i++){
            cout << si[i];
            if (i != si.size() - 1){
                cout << " ";
            }

        }cout << '\n';
    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함