https://school.programmers.co.kr/learn/courses/30/lessons/176963
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이 방법
vector에서 find 함수만 사용할 수 있다면 이 문제는 쉽게 풀 수 있다.
find 함수는 특정 값이 vector에 있는지 확인할 때 사용하는 함수다.
값을 찾으면 해당 값의 위치를 알려주는 iterator를 반환하고, 값을 찾지 못하면 vector.end()를 반환한다.
여기서는 photo 벡터의 이름이 name 벡터에 존재하는지 확인하고, 존재한다면 그 이름의 인덱스를 구해서 yearning 값을 더하면 된다.
주어진 정보들을 활용해 조건문만 잘 설정하고, find로 이름의 인덱스를 찾아가면서 각 사진의 총합 점수를 계산하면 된다.
풀이 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<string> name, vector<int> yearning, vector<vector<string>> photo) {
vector<int> answer;
for(int i=0; i<photo.size();i++){
int sum = 0;
for(int j=0; j<photo[i].size();j++){
if(find(name.begin(), name.end(), photo[i][j]) != name.end()){
int index = find(name.begin(), name.end(), photo[i][j]) - name.begin();
sum += yearning[index];
}
}
answer.push_back(sum);
}
return answer;
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] Lv.1 폰켓몬 c++ (0) | 2025.01.03 |
---|---|
[프로그래머스] Lv.0 진료순서 정하기 c++ (2) | 2025.01.02 |
[프로그래머스] Lv.2 주차 요금 계산 c++ (0) | 2024.12.31 |
[프로그래머스] Lv.0 정수를 나선형으로 배치하기 c++ (0) | 2024.12.30 |
[프로그래머스] Lv.3 정수 삼각형 c++ (0) | 2024.12.30 |