본문 바로가기
C++

코딩테스트 연습 -> 중복된 이름 제거

by Hwoarang757 2021. 7. 8.

출처 : 코딩 테스트 연습 -> 코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

###2021.07.15 내용 추가 합니다.

효율 적인 방법은 분명히 아닌거 같습니다.. -_-;; 이해도 못하고 어거지로 통과를 한거 같습니다 -_-;;; ...

#include <iostream>

#include <string>
#include <array>
#include <vector>
#include <functional>
#include <algorithm>


using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    //string answer = "";
    
    //TODO
      vector<string> out;

    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());

    int idxx = 0;

    std::for_each(participant.cbegin(), participant.cend(), [&](string strTemp) {
        
        auto it = find_if(completion.cbegin() + idxx, completion.cend(), [&](string strFind) {
            if (strTemp == strFind) return true;
            else return false;
        });

        if (it != completion.cend())
            idxx++;
        else 
            out.push_back(strTemp);

    });
        

/*
    if(out.size() > 0 )
        answer = out.at(0);
  */  
    return out.at(0);
}

 

###########################################

# 2021.07.08 이전 작성 내용 입니다. 

###########################################

 

아래 제가 작성한 내용은  잘못 된 코드입니다 죄송합니다 -_-;;;;. 현재 수정 방안을 찾고 있습니다 .

 

중복 된 이름 [ 동명 이인 ] 존재 시에 처리가 잘못 되었습니다. ....

---------------------------------------------------------------------------------------------------

입력값 〉 ["mislav", "stanko", "mislav", "ana"], ["stanko", "ana", "mislav"]
기댓값 〉 "mislav"
실행 결과 〉 실행한 결괏값 ""이(가) 기댓값 "mislav"와(과) 다릅니다.

---------------------------------------------------------------------------------------------------

#include <iostream>
//
#include <string>
#include <array>
#include <vector>
#include <functional>
#include <algorithm>

int main()
{
    std::vector<std::string> participant = { "leo", "kiki", "eden","kiki" };
    std::vector<std::string> completion = { "leo", "kiki" };

    /*
    std::for_each(participant.cbegin(), participant.cend(), [&](std::string str) {
        std::cout << str << std::endl;
    });
    */

    std::vector<std::string> out;
    bool bCompResult = false;

    std::copy_if(participant.cbegin(), participant.cend(), std::back_inserter(out) , [&] (const std::string &str)   {
        bCompResult = false;

        std::for_each(completion.cbegin(), completion.cend(), [&](std::string strCompletion) {
            if (strCompletion == str) {
                bCompResult = true;
                return;
            }
        });
        return !bCompResult;
    });

    
    std::for_each(out.cbegin(), out.cend(), [](std::string str) {
        std::cout << str << std::endl;
    });


}