말랑한 하루

[Programmers] 롤케이크 자르기 (Lv 2, Java) 본문

문제풀이/Programmers

[Programmers] 롤케이크 자르기 (Lv 2, Java)

지수는말랑이 2022. 10. 22. 14:41
반응형

[ 학습 내용 ]
※ Set

Set<type> set = new HashSet<>();
//type : Integer, String, pair<type, type> ... etc

useage 	: 	add	addAll	clear	contains	
		isEmpty	remove	size	toArray
others	:	containsAll	equals	hashCode	
		iterator	removeAll	retainAll	sliterator

IntStream

.range(startIndex, endIndex)
.rangeClosed(startIndex, endIndex)

.forEach()

.reduce()
.filter(index -> fs[i] == se[i])	// 범위 내 요소 중 조건에 부합하는 요소 반환


.sum()					// 결과 내 요소 합계
.count()				// 결과 내 요소 갯수
.sorted((o1, o2) -> o1 - o2)		// 결과 내 요소 정렬

.limit(maxSize)				// maxSize 보다 길지않은 요소로 반환


[ 소스 코드 ]

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

class Solution {
    public int solution(int[] topping) {
        int answer = 0;
        int fs[] = new int[topping.length];
        int se[] = new int[topping.length];
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();
        
        for(int i=0; i<topping.length; i++) {
            int idx = topping.length - i - 1;
            set1.add(topping[i]);
            set2.add(topping[idx]);
            fs[i] = set1.size();
            se[idx] = set2.size();
        }
        
        return (int)IntStream.range(0, topping.length - 1).filter(idx -> fs[idx] == se[idx+1]).count();
    }
}



반응형
Comments