뭔가...뭔가입니다!😂😂😂😀😂😂😂
게으르게 산 죄일까요 ?
막상 하나 둘 씩 밀린 과제와 개인 숙제들을 해결하고 있다보니 생각보다 양이 굉장히 많음을 뼈저리게 느끼고 있습니다!!
아아,,,,,,,GCOCO선수 쵸!!!!!!비!!!!!!!!상!!!!!!!!
아무리 포스팅을 해야하고 바빠도? 잡설 쿠키 한 접 싀 해야죠,,
최근 졸업하시고 취업하신 선배님들의 직무특강들을 듣는다고 말씀드렸었습니다.
많은 직무특강을 들은것은 아니지만, 공통적으로 말씀해주셨던 부분은 바로..
자신만의 무기를 만드는 것이었습니다!
진짜로 전투에 사용하는 무기가 아닌 정말 스스로 부끄럼 없이 잘하고, 잘할 수 있다고 말할 수 있는.
자신만의 고유한 강점을 말하는 것이지요.
생각해보면 저는 저만의 강력한 장점이라고 말할 수 있는것이 있나 싶더군요.
누구보다 이것만큼은 굉장히 잘한다!
뭔가 드는 생각이 제가 하는것들 모두 그냥 다들 이정도는 하지 않나... 평범하지 않나... 라는 생각이 듭니다.
앗! 잘하는것이 있을지도 모르겠습니다!
그것은... 혼자서도 잡설 한 COOKIE🍪를 참 잘한다는 것이지요!😀😀😀
참 그리고 또 중요한 포인트를 말해주셨는데, 이것은 다음 쿠키에서 공개하도록 하겠습니다😎
가시죠. 본론으로!
이 문제는 keymap과 target이 주어지는데요, 즉 keymap 자판을 이용해 target을 만들수 있겠냐!
아니면 만들수있으면 키를 최소 몇 번 눌러야 하는지, 못만든다면 -1을 반환해라! 가 포인트입니다.
코드를 보실까욘~
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<string> keymap, vector<string> targets) {
//정답반환용 벡터! 사이즈는 keymap의 사이즈만큼 할당~
vector<int> answer(targets.size(),0);
//만들기 가능한지 확인용 flag
bool check;
int z =0;//정답을 기록할 answer의 인덱스 변수
//타겟을 순회
for(auto i: targets){
int count=0;
//for문으로 타켓의 알파벳 하나씩 확인해보기
for(auto j:i){
int m=0;//keymap의 자판중 최소값을 기록하기 위한 변수
check = false;
//keymap을 순회하며 어떤 자판이 최소값인지 찾아보자
for(auto k:keymap){
//keymap으로 target의 글자를 만들수 있다면
if(k.find(j)!=string::npos){
//만들기 가능하다고 표시
check = true;
//자판을 몇번 눌러야 하는지
int a=k.find(j)+1;
if(m==0){
m=a;//처음엔 m에 대입
}
else{
m=min(m,a);//다른 자판에서도 찾을수 있다면 더 작은값을 사용
}
}
}
//만들수 있는 알파벳이라면 정답에 넣어주기
if(check){
answer[z]+=m;
}
//못만드는 알파벳이라면 -1 넣어주기
else{
answer[z]=-1;
break;
}
}
//정답을 기록할 answer의 인덱스 증가
z++;
}
return answer;
}
아이디어는 다음과 같습니다!
이 정도가 되겠습니다!
정말 제목 그대로, 대충 만든 자판인것 같습니다.
새삼 원하는 글자를 찾아 한번만 탁 누르면 되는 키보드가 참 편리하다고 느껴지네요 😄😀😁
이상입니다!