프로그래머스 문제풀이/LEVEL 1

[C++] 프로그래머스 문제풀이 LEVEL 1 대충 만든 자판

코딩준우 2023. 7. 3. 01:06

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

#include <bits/stdc++.h>


using namespace std;

int solve(std::string & target, std::unordered_map<char, int> & mapping){
    int res = 0;
    for (char ch : target){
        if (mapping.find(ch) == mapping.end()) return -1;
        res += mapping[ch];
    }
    return res;
}

vector<int> solution(vector<string> keymap, vector<string> targets) {
    vector<int> answer;
    std::unordered_map<char, int> mapping;
    
    for (auto key : keymap){
        for (int i = 0; i < key.size(); ++i){
            if (mapping.find(key[i]) == mapping.end()){
                mapping[key[i]] = i + 1;
            }
            else {
                mapping[key[i]] = std::min(i + 1, mapping[key[i]]);
            }
        }
    }
    
    for (std::string target : targets){
         answer.push_back(solve(target, mapping));
    }
    return answer;
}