티스토리 뷰

728x90

정규표현식의 편리함을 느끼게 된 해설이 있어서 작성한다.

 

1. skill_trees를 for loop 돌린다.

 

2. replaceAll("[^" + skill + "]", "")를 통해 String skill에 포함된 char가 아닌 모든 값을 제거한다.

여기서 사용된 정규표현식은 [^]인데 대괄호 내에 문자가 아닌 모든 것을 고르라는 표현식이며

replaceAll([^], "")을 통해 char를 제거한 것이다.

 

3. 문제의 조건이 처음의 스킬을 배워야 다음 스킬을 배울 수 있는 것이었으므로

어떤 스킬을 어떤 순서로 배우든간에 정답이 되려면 반드시 처음 스킬부터 순서대로 배워야한다.

즉 스킬트리가 "ABC"일때 정규화 이후의 검사해야할 스킬트리가 "BC"라면 indexOf를 하면 0이 아닌 1이 나올 것이다.

이 경우 A를 배워야만 B-C ... 를 배워나갈 수 있으므로 정답이 아니다.

 

즉 indexOf의 값이 == 0 이 아니라면 반드시 정답이 아니다.

 

class Solution {
    public int solution(String skill, String[] skill_trees) {
        int answer = 0;
        
        for (String skillTree : skill_trees) {
            skillTree = skillTree.replaceAll("[^" + skill + "]", "");
            if (skill.indexOf(skillTree) == 0) answer++;
        }
        return answer;
    }
}

 

레퍼런스

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

 

프로그래머스

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

programmers.co.kr

https://velog.io/@sgo8308/%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

[Java] 정규표현식 사용하기

정규표현식을 익혀봅시다. 😊

velog.io

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함