[C++/ 프로그래머스] 추억 점수

2024. 3. 3. 16:04C++/코딩 테스트

https://school.programmers.co.kr/learn/courses/30/lessons/176963

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 


작성한 코드

더보기
#include <string>
#include <vector>
#include <map>

using namespace std;

vector<int> solution(vector<string> name, vector<int> yearning, vector<vector<string>> photo) {
    vector<int> answer;
    
    map<string, int> m;
    for(int i=0;i<name.size();i++){
        m.insert({name[i], yearning[i]});
    }
    for(int i=0;i<photo.size();i++){
        int sum=0;
        for(int k=0;k<photo[i].size();k++){
            sum+=m[photo[i][k]];
        }
        answer.push_back(sum);
    }
    return answer;
}

해당 코드를 평소와 같이 vector문으로만 구현하려 하였지만 그 결과, 시간 초과라는 결과가 나타났다.

 

이를 해결하기 위하여 코드를 줄이고 싶었지만, 나의 눈에는 더이상 최적화를 할 수 없는 코드 구성이었다.

그러나 컴퓨터는 거짓말을 하지 않는법.

 

결국 나는 해답을 찾고자 다른 사람들의 코드를 검색하였다.

 

총 5명의 해답 코드를 분석하던 나는 절반 이상이

map이라는 STL(Standard Template Library, 표준 라이브러리)을 사용하는 것을 발견하였다.

(이것이 무엇인지는 다음 페이지에 작성하도록 하겠다.)

 

주어진 문제가 원하는 것이 해당 함수임을 알아챈 이후, 검색을 통해 사용법을 익혔고

위의 코드가 모자란 숙련도로 작성한 코드이다.