Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Tags
more
Archives
Today
Total
관리 메뉴

rudu_std

stream && Ramda 본문

Java

stream && Ramda

Ru_Du 2024. 9. 3. 02:33
import java.util.*;

public class Solution {
    public static void main(String[] args) {
        System.out.println(solution("CBD", new String[]{"BACDE", "CBADF", "AECB", "BDA"})); // Output: 2
    }
    
    public static int solution(String skill, String[] skill_trees) {
        return (int) Arrays.stream(skill_trees)
                            .filter(tree -> isValidSkillTree(skill, tree))
                            .count();
    }
    
    private static boolean isValidSkillTree(String skill, String tree) {
        int skillIndex = 0;
        for (char c : tree.toCharArray()) {
            int idx = skill.indexOf(c);
            if (idx != -1) { // c is in skill
                if (idx != skillIndex) return false;
                skillIndex++;
            }
        }
        return true;
    }
}

스트림 설명

Arrays.stream(skill_trees)

  1. Arrays.stream(skill_trees)는 skill_trees 배열을 스트림으로 변환.
  2. skill_trees 배열의 각 요소(스킬트리 문자열)가 스트림의 항목으로 변환.

.filter(tree -> isValidSkillTree(skill, tree))

  1. filter 메소드는 스트림의 각 요소에 대해 주어진 조건을 검사.
  2. 이 경우 조건은 람다 표현식 " tree -> isValidSkillTree(skill, tree) " 이다 .
  3. tree는 스트림의 각 요소, 즉 skill_trees의 문자열.
  4. isValidSkillTree(skill, tree) 메소드는 skill과 tree를 입력으로 받아 스킬트리가 유효한지 검사.
  5. 이 메소드가 true를 반환하면, tree는 필터링된 결과에 포함. false를 반환하면, tree는 필터링된 결과에서 제외.

.count();

  1. count() 메소드는 필터링된 스트림의 요소 개수를 계산
  2. isValidSkillTree(skill, tree)가 true를 반환한 스킬트리의 개수를 세어서 반환

'Java' 카테고리의 다른 글

JPA 쿼리  (0) 2024.09.05
Optional  (0) 2024.09.04
JDBC 정리  (0) 2024.08.02
JDBC  (0) 2024.08.01
람다 표현식 (Lambda Expression)  (0) 2024.07.24