[문자열] C 프로그래머스 스킬트리 풀이

New Jenice!·2025년 1월 19일
0

Daily Algorithm

목록 보기
63/71
post-thumbnail

문제

풀이 과정

  • 주어진 skill의 순서를 세팅한 후 skill_trees 를 차례대로 순회하며 확인하는 로직
  • 어렵진 않으나 약간 헷갈림
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
// skill_trees_len은 배열 skill_trees의 길이입니다.
int solution(const char* skill, const char* skill_trees[], size_t skill_trees_len) {
    int answer = 0;
    int check[26] = {0, };
    
    for (int i=0; skill[i] != '\0'; i++) {
        check[skill[i] - 'A'] = i + 1;
    }
    
    for (int i=0; i<skill_trees_len; i++) {
        int len = strlen(skill_trees[i]);
        int flag = 0;
        
        int cur = 1;
        for (int j=0; j<=len; j++) {
            int value = skill_trees[i][j] - 'A';
            
            if (check[value] > 0) {
                if (check[value] == cur) {
                    cur++;
                } else if (check[value] > cur) {
                    flag = 1;
                    break;
                }
            }
        }
        
        if (flag == 0) {
            answer++;
        }
    }
    
    return answer;
}
profile
Embedded Software Engineer

0개의 댓글