반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 스택/큐
- 검색 기능 확장
- @Getter
- Java
- 알고리즘
- H-index
- 완주하지 못한 선수
- 코딩 테스트
- @EnableScheduling
- @Data
- @configuration
- 기능개발
- @Setter
- 전화번호 목록
- 프로그래머스
- 스프링 스케쥴러
- 커링
- 루씬 인 액션
- 크론 표현식
- 모던 자바 인 액션
- K번째수
- kubenetes
- 정렬
- 고차원 함수
- 해시
- 영속 자료구조
- 쿠버네티스
- 롬복 어노테이션
- 다리를 지나는 트럭
- 가장 큰 수
Archives
- Today
- Total
Today I Learned
[프로그래머스] 해시 Level 2. 위장 (JAVA) 본문
728x90
해시에 의상 종류 별 개수를 넣어야되는건 알겠는데, 의상 조합을 어떻게 계산해야될지 모르겠어서 결국 컨닝함
(한 종류의 의상 수 + 1(안입는 경우의 수)) * (한 종류의 의상 수 + 1(안입는 경우의 수)) - 1(아무것도 안 입는 경우의 수)
이거랍니다.......
코드
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
Map<String, Integer> cHash = new HashMap<String, Integer>();
for(String[] c : clothes){
//c[0] : 의상이름, c[1] : 의상종류
cHash.put(c[1], cHash.getOrDefault(c[1],0)+1);
}
int result = 1;
for(String key : cHash.keySet()){
result *= (cHash.get(key) + 1);
}
return result-1;
}
}
결과
다른 사람의 풀이 중 stream을 사용한 신박한 풀이가 보여서 가져와봤다.
코드
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;
}
}
결과
(성능은 안나오네...?)
728x90
'알고리즘 & 코딩테스트' 카테고리의 다른 글
[프로그래머스] 정렬 Level 2. 가장 큰 수(JAVA) (0) | 2021.01.24 |
---|---|
[프로그래머스] 정렬 Level 1. K번째수(JAVA) (0) | 2021.01.22 |
[프로그래머스] 해시 Level 3. 베스트앨범(JAVA) (0) | 2021.01.21 |
[프로그래머스] 해시 Level 2. 전화번호 목록 (JAVA) (0) | 2021.01.19 |
[프로그래머스] 해시 Level 1. 완주하지 못한 선수 (JAVA) (0) | 2021.01.18 |
Comments