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 | 29 | 30 |
Tags
- docker
- jenkins
- SpringBoot
- 소가길을건너간이유6
- 14466
- 이산수학
- 18222
- 알고리즘
- 투에모스문자열
- 2108_통계학
- Error
- 백준
- 프로그래머스
- documentationpluginsbootstrapper
- 21278
- 날짜일수
- dockercompose
- 2167. 2차원 배열의 합
- 설정
- 이클립스
- CMD
- 호석이두마리치킨
- to display the conditions report re-run your application with 'debug' enabled
- EC2
- 20055
- 별자리 만들기
- Eclipse
- Error fetching remote repo 'origin'
- Java
- 자바
Archives
- Today
- Total
계단을 오르듯이
[JAVA] 위장 본문
조합의 기본적인 문제이지만,, 새벽에 풀어서 그런가 문제를 잘못읽고 쉽지 않게 푼.. 문제..ㅎㅎ..ㅠㅠ
우선, 배열의 2차원에 종류가 들어오고 중복 체크를 위해 Map을 사용하였다.
예를 들어, 상의, 하의, 모자의 종류가 있다고 한다면 각각 하나씩 입을수도 있고, 3가지 종류 중 하나만 입을수도 있다.
이 부분을 위해 각 종류의 가짓수에 +1을 해주어 입지 않을 경우를 추가해주었다.
그 후 모든 경우의 수를 구하기 위해 모든 가짓수를 곱한 후 모든 가짓수에서 하나도 선택되지 않았을 경우 1번을 빼주면 된다.
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 0;
Map<String,Integer> map = new HashMap<>();
for(int i=0;i<clothes.length;i++){
String str = clothes[i][1];
if(map.containsKey(str))
map.replace(str, map.get(str)+1);
else
map.put(str,1);
}
List<String> keyList = new ArrayList<String>(map.keySet());
int result = 1;
for(String s : keyList){
result *= (map.get(s)+1);
}
answer = result -1;
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[JAVA] 네트워크 (0) | 2022.01.08 |
---|---|
[JAVA] 타겟 넘버 (0) | 2022.01.08 |
[JAVA] 소수 찾기(완전탐색) (0) | 2022.01.07 |
[JAVA] 가장 큰 수 (0) | 2022.01.07 |
[JAVA] 기능 개발 (0) | 2022.01.07 |