-
[JavaScript] 프로그래머스 알고리즘 코딩테스트 연습 _ 위장알고리즘 코딩테스트 2022. 2. 8. 22:54
프로그래머스 코딩테스트 연습 위장
https://programmers.co.kr/learn/courses/30/lessons/42578
문제 설명
- 같은 이름을 가진 의상은 존재하지 않습니다.
- 의상 이름은 중복되지는 않는다 하지만 의상 종류는 중복되므로 종류를 기준으로 삼는다.
- 스파이는 하루에 최소 한 개의 의상은 입습니다.
- 의상을 모두 입지 않을 경우는 제외한다.
예제 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은 위에서 말한 모든 의상을 입지 않았을 경우를 제외시켜주기 위해서 해줬다.
'알고리즘 코딩테스트' 카테고리의 다른 글
[SQL] 프로그래머스 알고리즘 코딩테스트 연습 _ 고양이와 개는 몇 마리가 있을까 (0) 2022.02.07 [SQL] 프로그래머스 알고리즘 코딩테스트 연습 _ 중복 제거하기 (0) 2022.02.07 [SQL] 프로그래머스 알고리즘 코딩테스트 연습 _ 동물 수 구하기 (0) 2022.02.07 [SQL] 프로그래머스 알고리즘 코딩테스트 연습 _ 최솟값 구하기 (0) 2022.02.07 [SQL] 프로그래머스 알고리즘 코딩테스트 연습 _ 최댓값 구하기 (0) 2022.02.07 - 같은 이름을 가진 의상은 존재하지 않습니다.