나의 개발일지

[프로그래머스] Lv.2 스킬트리 [Python, 파이썬] 본문

프로그래머스

[프로그래머스] Lv.2 스킬트리 [Python, 파이썬]

YoonJuHan 2023. 12. 15. 20:36
  • 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/49993
  • 🔑 정규식(re), startswith()
    • skill에 주어진 스킬을 제외한 다른 스킬들을 없애기 위해 정규식을 사용
      • skill = "CBD" 일 때
      • "[^C^B^D]" 이렇게 만들어서 re.sub에 사용
      • re.sub( "[^C^B^D]", "", "BACDE")를 사용하면 "BCD"가 남음
    • 정규식을 통해 얻은 문자열은 startswith() 함수에 사용
      • skill.startswith(s)
      • 문자열 skill이 문자열 s로 시작하는지 확인 (Boolean 반환)
      • "CBD".startswith("BCD") → "CBD"는 "BCD"로 시작하지 않기 때문에 False
      • "CBD".startswith("CB") "CBD"는 "CB"로 시작하기 때문에 True
    • True일 때의 개수를 세면 끝 ✨

 

import re

def solution(skill, skill_trees):
    answer = 0
    
    skill_re = '[' + '^' + '^'.join(skill) + ']'   # [^C^B^D]
    
    for i in skill_trees:
        s = re.sub(skill_re, "", i)
        if skill.startswith(s):
            answer += 1
        
    return answer
Comments