문제설명)
코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어 위 예시의 경우 동그란 안경과 검정 선글라스를 동시에 착용할 수는 없습니다.착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다.코니는 하루에 최소 한 개의 의상은 입습니다.
문제풀이)
저번에 풀었던 문제와 비슷하게 느껴져서 map.set 을 사용하면 좋을거 같다고 생각이 들었다.
데이터를 처음에 맵에 넣어두고 이렇게 저렇게 다양한 시도를 해본 끝에 탄생
먼저 데이터를 담을 맵을 생성
옷갯수대로 포문을 돌리고 카테고리 중복 체크를 하기위해 +1 를 더한다
그럼 맵안에 {옷 : 2, 모자 :1} 이런식으로 세팅이 된다
따라서 맵을 다시 포문을 돌려서 한개씩 다른 아이템을 선택하니깐 + 1 을 하여 곱해준다
이때 곱하기를 쓰기 때문에 answer 디폴트값이 1 인것이다
마지막엔 아무것도 안입는 경우의 수는 없으니 -1 를 해준다 (이거 떄문에 잘 안맞아서 지피티한테 도움 청함;;)
function solution(clothes) {
let answer = 1;
const map = new Map();
for (let i = 0; i < clothes.length; i++) {
let category = clothes[i][1];
map.set(category, (map.get(category) || 0) + 1);
}
for (let [key, itemCount] of map) {
answer *= (itemCount + 1);
}
answer -= 1;
return answer;
}
반응형
'코딩테스트' 카테고리의 다른 글
코딩테스트 연습 정렬 K번째수 (0) | 2024.08.15 |
---|---|
[코테] 프로그래머스 해시 알고리즘 - 베스트앨범 (문제풀이) (0) | 2024.05.03 |
[코테] 프로그래머스 해시 알고리즘 - 전화번호 목록 (문제풀이) (2) | 2024.04.28 |
[코테] 프로그래머스 해시 알고리즘 - 완주하지 못한 선수 (문제풀이) (0) | 2024.04.24 |
[코테] 프로그래머스 해시 알고리즘 - 폰켓몬 문제풀이 (0) | 2024.04.21 |