#include <iostream>

#include <unordered_map>

#include <unordered_set>

#include <vector>

#include <string>

#include <sstream>

#include <algorithm>


class hsCode {

private:

    std::unordered_map<std::string, std::string> titlehs; 

    std::unordered_map<std::string, std::string> describehs;  


public:

    void additem(const std::string& title, const std::string& describe, const std::string& hsCode) {

        titlehs[title] = hsCode;

        describehs[describe] = hsCode;

    }


    std::unordered_set<std::string> gethscodes(const std::string& description) const {

        std::unordered_set<std::string> hscodes; 

        std::istringstream iss(description);

        std::string word;


        while (iss >> word) {

            if (titlehs.find(word) != titlehs.end()) {

                hscodes.insert(titlehs[word]); 

            }


            if (describehs.find(word) != describehs.end()) {

                hscodes.insert(describehs[word]); 

            }

        }


        return hscodes;

    }

};


int main() {

    hsCode hscodes;


    hscodes.additem("강철 코일", "강철로 만든 모자", "00403");

    hscodes.additem("강철 의자", "의자도 포함", "00404");

    hscodes.additem("강철 방석", "방석도 포함", "00405");

    hscodes.additem("손잡이", "손잡이 모양 원숭이", "00406");


    std::string description;

    std::cout << "품목 묘사 :  ";

    std::getline(std::cin, description);

    std::unordered_set<std::string> foundHsCodes = hscodes.gethscodes(description);

    

    if (!foundHsCodes.empty()) {

        std::cout << "관련 HS코드들: ";

        for (std::unordered_set<std::string>::iterator it = foundHsCodes.begin(); it != foundHsCodes.end(); ++it) {

            std::cout << *it << " ";

        }

    } else {

        std::cout << "HS코드를 찾을 수 없습니다.";

    }

    std::cout << std::endl;


    return 0;

}


국비 가면 뺨따구 때리기 가능? 

근데 gpt가 60프로 한듯 , 입력한 문장 토큰화로 쪼개고 반복자로 접근하는거 헤매고 있을때 병신 같은 코드 다 고쳐줌