๋ฌธ์ :
programmers.co.kr/learn/courses/30/lessons/49993
๋ถ์ :
๋ถ๋ช ๋๋ณด๋ค ๋ ํจ์จ์ ์ธ ์ฝ๋๊ฐ ์์ ๊ฒ์ด๋ผ ์๊ฐํ๋ค!
ํ์ง๋ง ์ด ๋ฌธ์ ๋ ๋คํํ(?) ํจ์จ์ฑ ์ฒดํฌํ๋ ๋ฌธ์ ๊ฐ ์๋์ฌ์ ๋ง์ถ ์ ์์๋ค. (soma ์ฒซ ๊ฒ์ ๋ฌธ์ ์ ๋น์ทํ ์ ํ์ ๋ฌธ์ ๋ผ(๊ทผ๋ฐ ๊ทธ ์น๊ตฌ๋ ์์ ์ ๋ ฌ์ด์๋ค) ๊ผญ ํ๊ณ ์ถ์๋ค)
์ด ๋ฌธ์ ๋ ์ ์ ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด ๊ณต๋ถํ์๋ ์ธ๋ป ๋ดค์๋ ์ต์ฅ ๊ณตํต ๋ถ๋ถ ๋ฌธ์์ด๊ณผ ๋น์ทํด ๋ณด์ด์ง๋ง skill์ ๋ชจ๋ ๋ฌธ์์ด์ ์คํฌ ํธ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์์ง ์์๋ ๋๋ค๋ ์ ์์ ์กฐ๊ธ ๋ค๋ฅด๋ค.
๋ง์ฝ์ ์ ์๋ skill ์์๊ฐ CBD ์ด๊ณ ์์์ ๋ง๋์ง ๊ฒ์ฌํ๊ณ ์ถ์ ๋์๋ค {"CBADF", " AECB", "OPQ", "CED"}๊ฐ ์ฃผ์ด์ก๋ค๊ณ ํ์ ๋
๋ต์ {"CBADF", " AECB"} ๊ฐ ๋์ด์ผ ํ๋ค. ์ฆ ์์์๋ง ๋ง์ถ๋ฉด ๋๋ ๊ฒ์ด์ง skill์ด ๊ฐ์ง ๋ชจ๋ ๋ฌธ์์ด์ skillTree๊ฐ ๊ฐ์ง๊ณ ์์ง ์์๋ ๋๋ค๋ ์ ์ด๋ค.
๊ทธ๋์ ์ ๊ทผํ ๋ฐฉ์์
1. skillTree์ ๊ฐ ๋ฌธ์์ด์ ์ ๊ทผํด skill์ ์๋ ๋ฌธ์์ด๋ง re_skillTree ๋ฐฐ์ด์ ๋ด๊ธฐ
2. re_skillTree์ ๋ํ์ฌ size๊ฐ 0์ผ ๊ฒฝ์ฐ ex> "OPQ" skill ์กฐ๊ฑด์ ์๋ฐฐ๋์ง ์์ผ๋ฏ๋ก +1
3. re_skillTree์ ๋ํ์ฌ size๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ skill๊ณผ ์์๊ฐ ๋ง๋์ง ๊ฒ์ฌ
3๋ฒ์์ re_skillTree๋ skill์ ์๋ ๋ฌธ์์ด๋ง ๋ด๊ฒผ์ผ๋ฏ๋ก ์์๊ฐ ๋ค๋ฅด๋ค๋ฉด ์๋ฐฐ๋๋ ์กฐ๊ฑด์ด๋ค
๋ฐ๋ผ์ ์ธ๋ฑ์ค๊ฐ ๊ฐ์ด ์์ง์ธ๋ค๋ฉด ๋์ค์
k์ n์ ์ธ๋ฑ์ค๊ฐ ๊ฐ์ ๊ฒ์ผ๋ก ์์๋๋ฏ๋ก +1 ์ฆ๊ฐ์์ผ์ค๋ค.
์ ์ฒด ์ฝ๋๋ ์๋์ ๊ฐ๋ค!
c++ ์ฝ๋ :
//
// [SW] 2018_skillTree.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/04/30.
//
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <vector>
using namespace std;
int main(){
int answer = 0;
string skill = "CBD";
vector<string> skillTree = {"BACDE", "CBADF", "AECB", "BDA","OPQ", "CED"};
vector<char> re_skillTree;
for(int i =0; i < skillTree.size(); i++){
for(int j = 0; j < skillTree[i].size(); j++){
if(skill.find(skillTree[i][j]) != string::npos){
re_skillTree.push_back(skillTree[i][j]);
}
}
//์ฃผ์ด์ง ์คํฌ ์กฐ๊ฑด์ด ํ๋๋ ์์ด๋ ์ ๋ต
if(re_skillTree.size() == 0){
answer++;
}else{
//์์ผ๋ฉด ์์ ๋น๊ต
int k = 0; int n = 0;
for(int i = 0; i < re_skillTree.size(); i++){
if(re_skillTree[n] == skill[k++]){
n++;
}else{
break;
}
}
if(k != 0 && n != 0 && k == n){
answer++;
}
}
re_skillTree.clear();
}
cout << answer << '\n';
return 0;
}
๊ฒฐ๊ณผ :
๋๊ธ