vnfhttps://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
마라톤에 참가한 선수 중 한 명이 완주하지 못했습니다.
완주를 하지 못한 한명을 찾아야 합니다.
조건
- 동명이인이 있을 수 있습니다.
풀이 방법
이 문제는 hashmap을 활용하여 해결했습니다.
먼저, completion의 길이만큼 for문을 돌면서 참가자와 완주자의 이름을 hashmap에 기록했습니다. 참가자의 이름은 ++ 연산을, 완주자의 이름은 -- 연산을 해줬습니다. 이렇게 하면 동일한 이름이 여러 번 등장하더라도 카운트를 정확히 관리할 수 있습니다. 이때 마지막 참가자는 따로 기록해줬습니다.
모든 이름 처리가 끝난 후, hashmap을 다시 for문으로 순회하며 각 이름의 값을 확인했습니다.
이때, 값이 0이 아닌 이름이 발견되면, 해당 이름이 완주하지 못한 선수라는 의미이므로 이를 반환하고 반복문을 종료했습니다.
풀이 코드
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
unordered_map<string,int> names;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
for(int i=0; i<completion.size(); i++){
names[participant[i]]++;
names[completion[i]]--;
}
names[participant[participant.size()-1]]++;
for(auto iter = names.begin(); iter != names.end(); iter++){
if(iter->second != 0){
answer = iter->first;
break;
}
}
return answer;
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] Lv.2 타겟 넘버 c++ (0) | 2025.01.16 |
---|---|
[프로그래머스] Lv.2 전화번호 목록 c++ (0) | 2025.01.15 |
[프로그래머스] Lv.1 최소직사각형 c++ (0) | 2025.01.14 |
[프로그래머스] Lv.1 크레인 인형뽑기 게임 c++ (0) | 2025.01.14 |
[프로그래머스] Lv.1 햄버거 만들기 c++ (0) | 2025.01.11 |