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 |