프로그래머스 [Level1] 완주하지 못한 선수 [Hash]

2025. 11. 9. 20:16·Coding Test/Hash

문제

#include <string>
#include <vector>
#include <unordered_set> 

using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    
    // 중복을 허락해야하네 
    // 완주를 하지 못한 선수의 이름을 return 해라. 
    
    // 자 여기서 고민인게 각 원소당 모든 도착자를 다 돌아야할지. 
    // 그럼 n^2 인데 경우의수가 효율적 x
    
    // 그럼 찾는 비용이 O(1)인 set을 이용하자 
    
    unordered_multiset<string> m_set(completion.begin(),completion.end());
    
    
    for(auto& iter : participant)
    {   
        auto set_iter = m_set.find(iter);
        
        if(set_iter == m_set.end())
        {
            answer = iter; 
        }
        
        else
        {
            m_set.erase(set_iter);
        }
    }
    
    
    return answer;
}

 

 

 

문제 접근 순서

 

1. Participant의 요소와 completion 요소를 반복문을 통해 1:1 결과가 일치하는지에 대한 경우의수는 n * (n-1) 이므로

   시간 복잡도가 O(n^2) 이므로 효율적이지 않은 방법이다. 

 

2. 따라서 participant의 각 원소마다의 해당 원소가 completion의 배열안의 원소인지 확인할려는 find 함수를 사용하는 대신 

   찾는 비용이 O(1) 시간 복잡도 평균으로 가지며 문제에서 동명이인이라는 중복허용이라는 조건이 있기 때문에       

   unorederd_mulitiset을 사용하고자 한다.

 

3. find의 반환값은 iterator 이므로 해당 값이 존재하지 않으면 iter는 end()를 반환하므로 해당 조건을 이용해 문제를 해결하였고,

    문제의 동명이인 같은 경우 한 번 찾아진 요소같은 경우 erase를 통해 해당 경우에 대비하였다.

'Coding Test > Hash' 카테고리의 다른 글

백준 1920번 "수찾기" [Hash의 Rehash 과정의 문제]  (0) 2026.01.29
'Coding Test/Hash' 카테고리의 다른 글
  • 백준 1920번 "수찾기" [Hash의 Rehash 과정의 문제]
seonhwan2547
seonhwan2547
seonhwan2547 님의 블로그 입니다.
  • seonhwan2547
    seonhwan2547 님의 블로그
    seonhwan2547
  • 전체
    오늘
    어제
    • 분류 전체보기 (80)
      • Unreal Project (17)
        • Khazan 모작 프로젝트 (2)
        • Unreal Study (10)
        • Blueprint (5)
      • Directx11 Project (11)
        • Thymesia 팀 프로젝트 (8)
        • Kaku Ancient Seal 개인 프로젝트 (2)
        • Thymesia Animation Tool 개발 (0)
      • Algorithm (6)
        • Binary_Search (2)
        • Greedy (1)
        • Dynamic Programming (1)
        • A-star (1)
      • Coding Test (31)
        • Brutal Force (2)
        • Sort (5)
        • DFS (3)
        • Binary_Search (4)
        • BFS (6)
        • Hash (2)
        • Dynamic Programming (6)
        • Greedy (1)
        • BackTracking (1)
        • Binary_Tree (1)
      • STL Container (1)
        • unorded_set (0)
        • priority_queue (1)
      • C++ 공부 및 몰랐던점 (8)
        • Smart pointer (1)
      • Visual Studio 설정관련 공부 (1)
      • Console Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 블로그 소개
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CodingTest
    Unreal
    hash
    Unreal Engine
    blueprint
    GameProgramming
    Game Programming
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
seonhwan2547
프로그래머스 [Level1] 완주하지 못한 선수 [Hash]