티스토리 뷰
[문제 링크]
https://school.programmers.co.kr/learn/courses/30/lessons/42578
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
HashMap<String, Integer> hashMap = new HashMap<>();
for (String[] cloth : clothes) {
//만약 해시에 키가 없으면 1개로 카운트 해서 추가
if (!hashMap.containsKey(cloth[1])) {
hashMap.put(cloth[1], 1);
//해시에 키가 존재하면 이전 카운트에 1 추가
} else if (hashMap.containsKey(cloth[1])) {
hashMap.put(cloth[1], hashMap.get(cloth[1]) + 1);
}
}
//경우의 수를 위해 answer에 곱해줄 것이니까 1로 해줌
int answer = 1;
//해시의 밸류에 +1(옷을 안입는 경우의 수를 추가해줌)을 해주고 곱해준다(전체 경우의 수 구하기)
for (Integer value : hashMap.values()) {
answer *= value + 1;
}
//옷 전체를 안입는 경우는 없기 때문에 해당 경우의 수를 빼준다.
return answer-1;
}
}
문제를 보고 키 밸류 쌍으로 하면 편하겠다고 생각함.
처음에는 문제의 조건 그대로 [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]이런 식으로 넣었음.
이렇게 넣고 밸류의 갯수를 카운팅하려고 했는데, 문제가 잘 안풀릴 것같았음.
예시는 모자, 안경인데 제한사항에서 의상 수가 1개 이상 30개 이하라고 하니 복잡하고 생각도 안남.
그래서 접근 방식을 바꿈.
보니까 yellow_hat, blue_sunglasses이런 애들은 필요가 없음.
결국 headgear같은 종류가 하나씩밖에 못 옷다는 게 중요했음.
그러면 이 다차원 배열에서 옷의 종류가 몇 개가 있는지 세고, 조합의 갯수를 세기 위해서 나온 옷의 종류를 곱해주면 되겠다고 생각함.
그래서 키를 옷의 종류, 밸류를 종류의 갯수로 설정함.
그렇게 곱하려고 했는데, 생각해보니 옷을 안입는 경우도 있음.
그래서 계산을 할때 종류의 갯수에 +1을 해줌. (경우의 수에 옷을 안입는 경우가 추가된 것)
답이 안나옴
이렇게 하면 옷을 전부 안입는 경우가 생김.
문제의 조건 중 스파이는 최소 한 개 이상의 옷을 입는다고 되어있음.
그래서 최종적으로 나온 answer에 -1 (옷을 전부 안입는 경우)를 해줌.
'알고리즘 문제' 카테고리의 다른 글
[hackerrank] CorrectnessAndTheLoopInvariant (삽입정렬) (0) | 2023.04.13 |
---|---|
[프로그래머스]전화번호 목록 - JAVA (0) | 2023.04.13 |
[프로그래머스] 실패율 구하기 (0) | 2023.01.01 |
[프로그래머스] 피보나치 수 (0) | 2022.12.24 |
[프로그래머스] 로또의 최고 순위와 최저 순위 자바 (0) | 2022.12.18 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Java
- jmeter쿠키
- jmeter로그인
- jmeter토큰
- 부하테스트시나리오
- bankersRounding
- jmeter부하테스트
- Lock
- Redisson
- 스프링faker
- Redis
- CheckedException
- 대규모더미데이터
- 자바
- EC2
- Python
- 토큰
- 동적크롤링
- 인덱스
- pessimisticlock
- hackerrank
- Spring
- 프로그래머스
- jwt
- 항해
- index
- jmeter세션
- CorrectnessAndTheLoopInvariant
- jmeter시나리오
- jmeter테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함