새소식

코딩테스트/프로그래머스

[C++] 스킬트리

  • -

[문제]

코딩테스트 연습 - 스킬트리 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

[문제 풀이]

완탐으로 풀었다. 제한 조건이 string 값들이 모두 26이하이고 skill_trees는 최대 20까지 들어가니 시간 복잡도를 따졌을때 모두 비교를 하더라도 26 * 26 * 20으로 시간안에 충분히 들어올수 있으므로 완탐을 이용해서 풀었다.

[회고]

완탐으로 풀기는 했는데 조금 더 깔끔한 풀이가 없는지 찾아봐야겠다. 충분히 더 깔끔한 풀이가 나올 수 있었던 문제인것 같다.

[코드]

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

//cbd -> skill_trees[i] 로 파악하는게 아니라 skill_trees[i] -> cbd로 파악을 해야 한다.

bool skillTo(string s1, string s2){
    bool answer = true;
    int count = 0;
    for(int i = 0;i<s2.size();i++){
        for(int j = 0;j<s1.size();j++){
            if(s2[i] == s1[j]){
                if(count != j){
                    return false;
                }
                count++;
            }
        }
    }
    
    return answer;
}

int solution(string skill, vector<string> skill_trees) {
    int answer = 0;
    
    for(int i = 0;i<skill_trees.size();i++){
        bool flag = true;
        flag = skillTo(skill,skill_trees[i]);
        if(flag){
            answer++;
        }
    }
    
    return answer;
}

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[C++] 혼자서 하는 틱택토  (0) 2023.04.14
[C++] 두 원 사이의 정수 쌍  (0) 2023.04.14
[C++] 땅따먹기  (0) 2023.04.13
[C++] 튜플  (0) 2023.04.06
[C++] 미로 탈출  (0) 2023.04.05
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.