[programmers] 스킬트리

김태민·2022년 5월 18일
0

알고리즘

목록 보기
65/77

mingssssss

1. 문제

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

2. 코드

import java.util.*;

class Solution {
    public int solution(String skill, String[] skill_trees) {
        int answer = 0;
        
        for (int i = 0; i < skill_trees.length; i++) {
            String temp = "";
            for (int j = 0; j < skill_trees[i].length(); j++) {
                if (skill.contains(Character.toString(skill_trees[i].charAt(j)))) {
                    temp += skill_trees[i].charAt(j);
                }
            }
            if (temp.equals(skill.substring(0, temp.length()))) {
                answer++;
            }
            temp = "";
        }
        return answer;
    }
}

3. 리뷰

해당 문자열이 비교 문자열 순서대로 이루어져있는지 확인하는 문제이다.

이것 저것 생각해봤지만.. 도저히 풀이가 떠오르지 않아서

구글링을 통해 해답을 얻었다.

먼저 스킬트리 배열에서 스킬을 하나씩 꺼내와서

스킬트리와 상관 없는 문자를 지웠다.

문자를 char형으로 가져와서 contains를 String 값과 비교하려 하니 안 됐다.

char형을 String으로 변환하는 방법을 통해

skill에 포함되어 있는 스킬들만 temp String에 넣어줬다.

이렇게 하면 temp에는 skill에 포함되어 있는 스킬들만 남게 된다.

여기서 temp의 길이만큼 skill을 잘라서(앞의 스킬을 찍어야 뒤에 스킬을 찍을 수 있으므로)

temp와 temp의 길이만큼 자른 skill의 값이 다르다면 answer에 체크하지 않고,

같다면 answer에 체크해줬다.

문제 자체는 쉬운데, 이것을 구현하기가 쉽지 않다..

replace를 통해서 skill에 포함되어 있지 않으면 "" 빈값으로 두는 방법도 있지만

이 방법이 생각나서 풀었다.

숫자는 이제 제법 다룰 수 있겠는데, String이나 char는 아직 다루기 쉽지 않다..

연습만이 살길!!

profile
어제보다 성장하는 개발자

0개의 댓글