반응형
문제
스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다.
예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다.
종류 이름
얼굴 동그란 안경, 검정 선글라스
상의 파란색 티셔츠
하의 청바지
겉옷 긴 코트
스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요.
나의 풀이
function solution(clothes) {
var answer = 1;
let clothobj = {}
clothes.map((el,index)=> {
if (clothobj[el[1]]){
clothobj[el[1]] += 1
} else{
clothobj[el[1]] = 1
}
})
const clotharr = Object.keys(clothobj)
for(let i = 0 ; i < clotharr.length; i++){
let cnt = clothobj[clotharr[i]]
if ( clotharr.length>1){
cnt = cnt +1;
}
answer = answer*cnt
}
if ( clotharr.length>1){
answer = answer-1;
}
return answer;
}
다른이들의 풀이
function solution(clothes) {
return Object.values(clothes.reduce((obj, t)=> {
obj[t[1]] = obj[t[1]] ? obj[t[1]] + 1 : 1;
return obj;
} , {})).reduce((a,b)=> a*(b+1), 1)-1;
}
나는 객체를 선언하고, 그곳에 해당 내용이 있으면 추가, 없으면 1로 하는 식으로 했는데
지금 상황에서는 value값만 필요해서 굳이 객체를 다룰 필요 없이 위의 Object.value을 통해 배열로 뽑아 낼 수 있었다.
이러면 나중에 Object.key나 Objec.value로 리스트를 또 만들필요가 없었다.
나중에 꼭 써먹자
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] level2. 방문길이 (javascript) (0) | 2021.05.27 |
---|---|
[프로그래머스]level2. 최댓값 최솟값 (javascript) (0) | 2021.05.16 |
[프로그래머스] level2. 다리를 지나는 트럭 (javascript) (0) | 2021.05.16 |
[프로그래머스] level2. 피보나치 (javascript) (0) | 2021.05.16 |
[프로그래머스] level1. 로또의 최고 순위와 최저 순위 (javascript) (3) | 2021.05.16 |