프로그래머스 코딩테스트 연습 위장(해시) 문제
코딩테스트 연습으로 해시의 위장 문제를 풀어보았다.
우선 내가 작성한 코드이고, 물론 실패했다. 친구랑 시간내에 풀기로하여 시간을 맞추지 못했다…
문제 풀어보기
모든 조합을 구하려고 했는데,
sb.delete(0, sb.length());
set2.clear();
}
이 부분에서 초기화를 하며 전에 있던 옷까지 사라져 같은 조합이나와도 그 수를 인식해버리는 것 같다.
친구가 푼 코드는 해시 맵을 이용하여 모든 옷의 타입의 수를 구하여 경우의 수 구하는 법으로 구했다고 한다. 그런데 그런의도일까..?
프로그래머스 제일 처음 나오는 분의 코드는
import java.util.*;
import static java.util.stream.Collectors.*;
class Solution {
public int solution(String[][] clothes) {
return Arrays.stream(clothes)
.collect(groupingBy(p -> p[1], mapping(p -> p[0], counting())))
.values()
.stream()
.collect(reducing(1L, (x, y) -> x * (y + 1))).intValue() - 1;
}
}
이렇게 생겼다. 모르는게 천지;; 람다식으로 간단하게 표현이 가능한 것 같다. 람다식을 공부해야겠네…