알고리즘 코딩테스트
[JavaScript] 프로그래머스 알고리즘 코딩테스트 연습 _ 위장
kwaktaem
2022. 2. 8. 22:54
프로그래머스 코딩테스트 연습 위장
https://programmers.co.kr/learn/courses/30/lessons/42578
코딩테스트 연습 - 위장
programmers.co.kr
문제 설명
- 같은 이름을 가진 의상은 존재하지 않습니다.
- 의상 이름은 중복되지는 않는다 하지만 의상 종류는 중복되므로 종류를 기준으로 삼는다.
- 스파이는 하루에 최소 한 개의 의상은 입습니다.
- 의상을 모두 입지 않을 경우는 제외한다.
예제 1번을 보면 입을 수 있는 의상의 종류가 2가지가 있다. 풀이를 해보면
- 해당하는 종류의 옷말고 다른 종류의 옷을 입은 경우를 생각해서 기본값을 1로 해주고
- 해당 종류의 옷을 입었으면 값을 1씩 올려주고
- 해당 종류의 다른 옷을 입었다면 값을 1씩 올려준다.
function solution(clothes) {
let answer = 1
let object = {}
for (let i = 0; i < clothes.length; i++) {
if (object[clothes[i][1]]) {
object[clothes[i][1]]++
} else {
object[clothes[i][1]] = 1
}
}
for (let j in object) {
answer *= object[j] +1
}
return answer - 1
}
- 앞서 말한대로 answer의 기본값을 1로 정해주고
- clothes 배열을 for문을 이용해서 반복을 시켜줘서, object 객체안에 의상의 종류를 key로 할당해주고, 의상 종류에 속하는 옷의 개수를 value로 object에 할당을 해줬다.
- if문을 활용해서 해당 종류의 옷을 입었으면 1씩 증가를 시켜주게하고, 해당 종류의 옷을 입지 않았으면 1로 해줬다.
- object를 반복시켜줘서 옷의 개수와 +1을 해서 기본값을 설정해줬던 answer에 곱해주기 위해서 for in문을 사용했다.
- 마지막으로 return에 -1은 위에서 말한 모든 의상을 입지 않았을 경우를 제외시켜주기 위해서 해줬다.