728x90
반응형
SMALL
프로그래머스 문제 풀이: 추억 점수
문제 링크: 문제 보기
문제 설명:
각 인물의 그리움 점수가 주어질 때, 여러 장의 사진에서 등장하는 인물들의 그리움 점수 합을 계산하는 문제입니다. 각 사진에 대해 포함된 인물들의 점수를 더해 리스트로 반환해야 합니다.
문제 해결 코드
#include <string>
#include <map>
#include <vector>
using namespace std;
map<string, int> mp; // 이름별 그리움 점수를 저장하는 맵
vector<int> solution(vector<string> name, vector<int> yearning, vector<vector<string>> photo) {
vector<int> answer;
// 이름별 그리움 점수를 맵에 저장
for (int i = 0; i < name.size(); i++) {
mp[name[i]] = yearning[i];
}
// 각 사진별로 점수 계산
for (vector<string>& photo_group : photo) {
int sum = 0;
for (string& person : photo_group) {
sum += mp[person]; // 존재하지 않는 이름은 기본값 0으로 처리됨
}
answer.push_back(sum);
}
return answer;
}
코드 설명
- 핵심 알고리즘: 해시맵(
map
)을 활용하여 각 인물의 그리움 점수를 저장한 후, 각 사진에 등장하는 인물들의 점수를 빠르게 합산합니다. - 구현 세부사항:
- 이름과 그리움 점수를
map<string, int>
에 저장하여 O(1) 시간에 접근할 수 있도록 합니다. - 각 사진에서 등장하는 인물의 점수를 합산하여
answer
리스트에 추가합니다. - 맵에 존재하지 않는 이름은 자동으로 0으로 처리됩니다.
- 시간 복잡도 분석:
- 이름-점수 매핑 저장: O(n), 여기서
n
은 이름의 개수 - 각 사진별 점수 계산: O(p * m), 여기서
p
는 사진의 개수,m
은 사진에 포함된 인물 수 - 총 시간 복잡도: O(n + p * m)
결과
이 코드는 주어진 입력에 대해 효율적으로 각 사진별 점수를 계산하여 반환합니다. 해시맵을 이용해 빠르게 인물의 점수를 찾고 합산하는 방식으로 구현되었습니다.
다른 접근 방식으로는 unordered_map
을 사용하여 탐색 성능을 O(1)로 개선할 수 있습니다. 하지만 이 문제에서는 일반 map
을 사용해도 충분한 성능을 제공합니다.
728x90
반응형
LIST
'programmers' 카테고리의 다른 글
프로그래머스 [[PCCE 기출문제] 9번 / 이웃한 칸](C++) -yes6686- 티스토리 (0) | 2025.02.07 |
---|---|
프로그래머스 [연습문제 / 공원 산책](C++) -yes6686- 티스토리 (1) | 2025.02.06 |
프로그래머스 [메뉴 리뉴얼](C++) -yes6686- 티스토리 (0) | 2025.02.04 |
프로그래머스 [달리기 경주] (C++) -yes6686- 티스토리 (0) | 2025.02.03 |
프로그래머스 [깊이/너비 우선 탐색(DFS/BFS)] 타겟 넘버(C++) -yes6686- 티스토리 (0) | 2025.02.03 |