[C++] BOJ 9536번: 여우는 어떻게 울지? 🦊

ㅎㅎ·2023년 8월 4일
0

BOJ

목록 보기
28/65

BOJ 9536번: 여우는 어떻게 울지?

문제

예제

이게 왜 힌트야 푸하하 🦊🦊🦊🦊🦊


문제 풀이

https://jaimemin.tistory.com/929
위 사이트를 참고했다.

버퍼를 비우는 것이 중요한 문제...

getline : 원하는 구분자(delimiter)를 만날 때 까지 모든 문자열을 입력 받아 하나의 string 객체에 저장

#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <string>
using namespace std;

int main() {
    ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

    int t, i, j; // 테스트 케이스
    cin >> t;
    cin.clear();

    string flush;
    getline(cin, flush);

    for (i = 0; i < t; i++) {
        string s, temp;
        getline(cin, s);
        map<string, bool> visited;
        while (1) {
            getline(cin, temp);
            string a;
            bool q = false;
            for (j = temp.length() - 1; j >= 0; j--) {
                if (temp[j] == ' ') {
                    reverse(a.begin(), a.end());
                    if (a == "say?") { q = true; break; }
                    visited[a] = true;
                    break;
                }
                else { a += temp[j]; }
            }

            if (q) { break; }
        }
        temp.clear();

        vector<string> res;
        for (j = 0; j < s.length(); j++) {
            if (s[j] == ' ') {
                if (!visited.count(temp)) { res.push_back(temp); }
                temp.clear();
            }
            else { temp += s[j]; }
        }

        if (!visited.count(temp)) { res.push_back(temp); }
        for (j = 0; j < res.size(); j++) { cout << res[j] << " "; }
        cout << '\n';
    }
    
    return 0;
}
profile
Backend

0개의 댓글