[JavaScript] 위장
2022. 8. 31. 23:21ㆍAlgorithm/프로그래머스
level : 2
문제 링크 : 위장
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
My Solution
function solution(clothes) {
let answer = 1;
let mymap = new Map();
clothes.forEach(arr=>{
if(mymap.has(arr[1]))
mymap.set(arr[1],mymap.get(arr[1])+1);
else
mymap.set(arr[1],1);
})
for(let [key,value] of mymap)
answer*=(value+1);
answer--;
return answer;
}
풀이방법
의상의 종류에 따라 리스트를 나눠야 할 것이라 판단되어 mymap이라는 Map 객체를 생성 후 의상의 종류를 key로 하고 의상의 종류에 들어가는 의상의 이름의 수를 value에 넣었다.(시간 복잡도는 O(N)이다.)
각 의상의 종류에 따른 의상의 이름 개수와 선택된 의상의 종류에서 아무 의상이 선택 안되는 경우를 더하여 answer에 값을 곱해준다.(시간 복잡도는 O(N)이다.)
마지막으로 answer에서 모든 의상의 종류에서 아무 의상이 선택이 안되는 경우를 빼준다.
풀이방법의 시간 복잡도는 O(N)이다.
느낀점
문제를 풀 때, 시간 복잡도를 고려하여 풀었다. 매번 풀이를 할 때마다 시간복잡도를 고려해서 풀 예정이다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[JavaScript] [1차] 프렌즈4블록 (0) | 2022.09.03 |
---|---|
[JavaScript] 네트워크 (0) | 2022.09.01 |
[JavaScript] 두 큐 합 같게 만들기 (0) | 2022.08.23 |
[JavaScript] 올바른 괄호 (0) | 2022.08.23 |
[JavaScript] 수식 최대화 (0) | 2022.08.16 |