본문 바로가기

프로그래머스

프로그래머스(자바, Java) - Level2. 스킬트리

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

 

프로그래머스

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

programmers.co.kr

 


주요 포인트 및 문제 리뷰

  • 처음에 문제를 풀 때 skill_trees 문자열에서 필수 스킬에 해당하는 문자들의 인덱스를 찾아서 오름차순 비교할 경우 기존이랑 동일한지 확인하는 구조로 처리를 했었다. 하지만 채점이 틀렸기 때문에 다시 생각할 필요가 있었다.
  • 구조를 다시 생각해보니 skill에 포함하지 않은 문자들은 필요하지 않는 정보이기 때문에 없어도 됐었다.
  • replaceAll 메서드에 정규표현식을 사용하여 skill 문자열에 포함되지 않는 문자들을 공백으로 바꿔주었다.
  • 어떤 스킬의 선행스킬은 필수지만 후행은 선택이기 때문에 replaceAll을 적용시킨 문자열의 길이만큼 skill 문자열과 동일한지 비교하여 주었다.

소스코드

class Solution {
    public int solution(String skill, String[] skill_trees) {
        int answer = 0;

        for (String s : skill_trees) {
            String str = s.replaceAll("[^" + skill + "]", "");
            if (skill.substring(0, str.length()).equals(str)) {
                answer++;
            }
        }

        return answer;
    }
}