본문 바로가기
Algorithm/Programmers Java

[JAVA] 프로그래머스 LEVEL2 스킬트리

by 제우제우 2024. 10. 11.

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

 

프로그래머스

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

programmers.co.kr

코딩테스트 연습 > Summer/Winter Coding(~2018) > 스킬트리

 

난이도: LEVEL2

알고리즘 유형: 구현 

정답 코드 

import java.util.*;
import java.util.stream.*;
class Solution {
    static HashSet<Character> set = new HashSet<>();
    public int solution(String skill, String[] skill_trees) {
        init(skill);
        return check(skill_trees, skill);
    }
    public static void init(String skill){
        IntStream.range(0, skill.length())
            .forEach(i -> {
               set.add(skill.charAt(i)); 
            });
    }
    public static int check(String [] skill_trees, String skill){
        int cnt = 0;
        StringBuilder sb = new StringBuilder();
        for(String skill_tree : skill_trees){
            IntStream.range(0, skill_tree.length())
                    .forEach(i -> {
                        char cur = skill_tree.charAt(i);
                        if(set.contains(cur)) sb.append(cur); 
                    });
            String cur = sb.toString();
            boolean flag = true;
            for(int i = 0; i < cur.length(); i++){
                if(skill.charAt(i) != cur.charAt(i)){
                    flag = false;
                    break;
                }
            }
            if(flag) cnt++;    
            sb.setLength(0);
        }
        return cnt;
    }
}