C++:: 프로그래머스 <대충 만든 자판>

jahlee·2023년 2월 27일
0

프로그래머스_Lv.1

목록 보기
1/75
post-thumbnail

단순히 타겟 문자가 keymap[i][j] 과 같은때 전체 keymap 자판에서 j+1 값이 가장 작은것을 채택하여 타겟문자열을 완성하는데 필요한 값들의 합을 구해주면된다.

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<string> keymap, vector<string> targets)
{
    vector<int> answer;
    for(int i=0;i<targets.size();i++)
    {
        answer.push_back(0);
        for(int j=0;j<targets[i].size();j++)
        {
            char c = targets[i][j];//타겟 문자 c
            int type=101, flag=1;
            /*
              1 <= keymap원소길이 <= 100이고
              flag는 타겟문자를 못찾았을때를 위한 플래그
            */
            for(int k=0;k<keymap.size();k++)
            {
                for(int l=0;l<keymap[k].size();l++)
                {
                    if(keymap[k][l] == c)
                    {
                        type = min(type, l+1); // 가장 적게 타입하는 값을 저장
                        flag = 0; // 타입가능한 문자면
                        break;
                    }
                }
            }
            if (flag)//한번도 타입한적이 없다면
            {
                answer[i] = -1;
                break;
            }
            answer[i] += type;//타입한 값을 더해준다
        }
    }
    return answer;
}

0개의 댓글