프로그래머스 49993번 스킬트리 Java

: ) YOUNG·2024년 2월 20일
1

알고리즘

목록 보기
321/417
post-thumbnail

프로그래머스 49993번
https://www.acmicpc.net/problem/5944

문제



생각하기


  • skill에 있는 문자들이 순서대로 나오는지 확인만 하면 된다.


동작


        int N = skill.length();
        int M = skill_trees.length;
        char[] skillArr = skill.toCharArray();
        List<Character> skillList = IntStream.range(0, N)
                                    .mapToObj(i -> skillArr[i])
                                    .collect(Collectors.toList());

char타입의 배열을 stream을 사용해서 List<Character>로 변경



결과


코드



import java.util.*;
import java.util.stream.*;

class Solution {
    
    public int solution(String skill, String[] skill_trees) {
        int ans = 0;
        
        int N = skill.length();
        int M = skill_trees.length;
        char[] skillArr = skill.toCharArray();
        List<Character> skillList = IntStream.range(0, N).mapToObj(i -> skillArr[i]).collect(Collectors.toList());
                
        for(int i=0; i<M; i++) {
            char[] chArr = skill_trees[i].toCharArray();
            int len = chArr.length;
            int idx = 0;
            boolean flag = false;
            
            for(int j=0; j<len; j++) {
                char ch = chArr[j];
                
                if(skillList.contains(ch) && skillList.get(idx) != ch )  {
                    flag = true;
                    break;   
                } else if(skillList.contains(ch) && skillList.get(idx) == ch) {
                    idx++;
                }
            }
            
            if(!flag) {
                ans++;
            }
        }
        
         
        return ans;
    } // End of solution()
} // End of Solution class

0개의 댓글