문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42576?language=cpp
간단 회고:
O | X | |
내가 직접 풀었나? | ✔ | |
다른 사람 풀이를 참고 하였나? |
✔ | |
어려웠나? | ✔ | |
푸는데 오래걸렸나? | ✔ |
✅✔
출처:
https://mungto.tistory.com/193
완전히 남의 풀이를 참고했다. 해시 맵이라는 자료구조를 사용할 생각조차 못했다. 해시 맵의 사용법에 대해 처음 익힐 수 있어서 좋았다.
여기서 두가지 중요 c++ 테크닉이 나오는데
1. 범위 기반 for문 (쉽게 말해 배열안의 원소를 기준으로 순회)
int arr[3] = {23, 34, 50}
for (int element : arr) {
cout << element << endl;
}
23
34
50
https://openmynotepad.tistory.com/15
해당 링크에 범위 기반 순회 방법에 대해 잘 기술되어있다.
2. auto
변수를 초기화할 때 사용하는 값을 기준으로 적절한 타입을 추론하도록 하면 편하지 않을까?
출처: https://boycoding.tistory.com/184 [소년코딩]
풀이:
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
//해쉬맵 초기화
unordered_map<string, int> hash;
// 이름을 key로 value에는 참여횟수
for (string name : participant) {
hash[name]++;
}
// 완주자를 이름을 key로 찾아 --
for (string name : completion) {
hash[name]--;
}
// hash map을 순회하며 두번째 값(참여횟수)이 0보다 클 경우,
// 첫번째 key(이름)을 답에 넣는다.
for (auto pair : hash) {
if (pair.second > 0) {
answer = pair.first;
break;
}
}
return answer;
}
'코딩 > 알고리즘 정답 or 풀이' 카테고리의 다른 글
[dfs] 프로그래머스 -가장 먼 노드 c++ (1) | 2021.12.31 |
---|---|
[graph + bfs] 프로그래머스 -가장 먼 노드 c++ (0) | 2021.12.30 |
백준 2231번 분해합 c++ (0) | 2021.12.30 |
백준 11653번 소인수분해 (0) | 2021.11.05 |
백준 6159번 코스튬 파티 (0) | 2021.11.02 |
댓글