프로그래머스 - 스킬트리 (문자열과 시뮬레이션)

2025. 10. 12. 23:47·dev/Algorithm

https://school.programmers.co.kr/learn/courses/30/lessons/49993#fnref1

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제 이해

선행 스킬 순서가 주어질 때, 각 유저의 스킬트리가 순서를 어기지 않는지 판단하여 가능한 스킬트리 개수를 구한다.

접근 방법

스킬트리 순서를 어기지 않는지만 판단하면 된다. 

따라서 각 스킬트리에서 선행 스킬만 추출한 뒤, 주어진 순서의 접두사(prefix)인지 확인한다.

코드

function solution(skill, skill_trees) {
    let answer = 0

    for (const tree of skill_trees) {
        // 스킬트리에서 선행 스킬에 해당하는 문자만 남김
        const filtered = [...tree].filter(s => skill.includes(s)).join('')
        
        // 남은 문자열이 선행 스킬 순서의 접두사인지 확인
        if (skill.startsWith(filtered)) { 
        	answer++ 
        }
    }

    return answer
}

시간 복잡도

각 스킬트리에 대해 한 번씩 순회하므로 O(N × M)
(N: 스킬트리 개수, M: 스킬트리 문자열 길이)

정리

문자열 필터링과 접두사 검증으로 간단히 구현 가능한 시뮬레이션형 구현 문제.

728x90
반응형

'dev > Algorithm' 카테고리의 다른 글

프로그래머스 - 오픈채팅방 (문제대로 구현하기)  (0) 2025.10.16
프로그래머스 - 두 큐 합 같게 만들기 (투포인터 눈치채기2)  (0) 2025.10.13
프로그래머스 - 연속된 부분 수열의 합 (투포인터 눈치채기)  (1) 2025.10.09
프로그래머스 - 2 x n 타일링 (dp 눈치채기)  (0) 2025.10.06
프로그래머스 - 숫자 변환하기 (BFS로 최단거리 찾기)  (0) 2025.10.03
'dev/Algorithm' 카테고리의 다른 글
  • 프로그래머스 - 오픈채팅방 (문제대로 구현하기)
  • 프로그래머스 - 두 큐 합 같게 만들기 (투포인터 눈치채기2)
  • 프로그래머스 - 연속된 부분 수열의 합 (투포인터 눈치채기)
  • 프로그래머스 - 2 x n 타일링 (dp 눈치채기)
mattew4483
mattew4483
Test. Learn. Repeat.
  • mattew4483
    blog of testorian
    mattew4483
  • 전체
    오늘
    어제
    • 분류 전체보기
      • dev
        • software
        • network
        • AI
        • Algorithm
        • FrontEnd
        • JavaScript
        • TypeScript
        • React
        • React Native
        • Next JS
        • Django
        • etc
      • 회고
        • feedback
        • 주간 회고
        • life
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
mattew4483
프로그래머스 - 스킬트리 (문자열과 시뮬레이션)
상단으로

티스토리툴바