알고리즘/프로그래머스
프로그래머스 - 위장 (JavaScript)
시나모온
2020. 5. 7. 18:05
문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/42578?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
한번이라도 들어온 옷 종류를 배열로 일일이 저장해서 매번 순회를 하게 되면 한번 순회 할 때마다, O(N)이 걸리고 전체 시간 복잡도는 O(N^2)이 된다.
순서는 상관없고 있는지 없는지만 판단하고 싶으면 map과 set 자료구조가 한번 탐색에 O(lgN)이 가능하다 따라서 전체 시간복잡도를 O(NlgN)으로 줄일 수 있다.
function solution(clothes) {
var answer = 0;
const m = new Map();
clothes.forEach(function(el) {
let kinds = el[1];
if(m.has(kinds)) {
m.set(kinds, m.get(kinds) + 1);
} else {
m.set(kinds, 1);
}
});
let sum = 1;
for(let val of m.values()) {
sum *= (val + 1);
}
answer = sum - 1;
return answer;
}

개발 환경 : vscode
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~