이것저것
프로그래머스 Level2 - 스킬트리 본문
https://programmers.co.kr/learn/courses/30/lessons/49993
풀이과정
이번 문제도 일반적인 풀이와는 조금 다르게 푼 거 같다(?)
만약 스킬트리 중에 스킬이 존재하면 그 스킬트리에서 나타나는 스킬에 인덱스를 미리 메모해두었다.
예를 들어
CBD 일 경우 ⇒ 스킬의 인덱스는 순서대로 0,1,2이다.
스킬트리 BACDE ⇒ 1 0 2 (A랑 E는 신경 쓸 필요가 없음 , B 스킬 인덱스는 1, C스킬 인덱스는 0, D 스킬 인덱스는 2)
이런식으로 미리 메모를 해두었다.
이 메모는 무조건 0부터 시작해야한다. 그리고 0→1→2 순서대로 건너뛰지 않고 진행되는 경우만 카운트해주면 답을 구할 수 있었다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(string skill, vector<string> skill_trees) {
int answer = 0;
for(int i=0;i<skill_trees.size();i++){
string target = skill_trees[i];
vector<int> memo;
for(int j=0;j<target.size();j++){
for(int k=0;k<skill.size();k++){
if(target[j]==skill[k]){
memo.push_back(k);
}
}
}
bool flag = false;
for(int j=0;j<memo.size();j++){
if(memo[j]!=j){
flag = true;
}
}
if(flag==false){
answer++;
}
}
return answer;
}
'Problem Solving' 카테고리의 다른 글
BOJ - 13549. 숨바꼭질 3 (0) | 2021.02.23 |
---|---|
프로그래머스 Level2 - 멀쩡한 사각형 (0) | 2021.02.22 |
프로그래머스 - Level2 튜플 (0) | 2021.02.22 |
프로그래머스 Level2 소수 찾기 (0) | 2021.02.20 |
프로그래머스 Level3 - 네트워크 (0) | 2021.02.20 |
Comments