일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 스택
- 프로그래머스
- lv2
- 그래프 탐색
- 구현
- 딕셔너리
- 문자열
- 자료구조
- 그리디 알고리즘
- 파이썬
- BASIC
- 자바스크립트
- level2
- 너비 우선 탐색
- JavaScript
- BFS
- DP
- DFS
- 그래프 이론
- 다이나믹 프로그래밍
- 브루트포스 알고리즘
- 알고리즘
- 웹 프론트엔드
- 그래프이론
- programmers
- CSS
- web
- 프로그래머스스쿨
- 정렬
- 백준
Archives
- Today
- Total
DevLog:-)
[프로그래머스][Javascript]의상 본문
반응형
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
종류별 옷 수를 +1 해서 각각 곱하면 되는 문제이다.
제공된 배열에서 종류별 옷 수를 찾는 코드를 작성하는 것이 핵심이다.
코드
처음에 작성한 코드 (c배열에는 옷종류를 n배열에는 c배열 순서에 맞춰서 종류별 개수를 누적했다. )
function solution(clothes) {
var answer = 1;
let c =[];
let n =[];
let N;
for (let i of clothes){
if(!c.includes(i[1])){
c.push(i[1]);
n[c.indexOf(i[1])] = 1;
}
else{
n[c.indexOf(i[1])] += 1;
}
}
//console.log(c);
//console.log(n);
for(let i of n){
answer *= (i+1);
}
return answer-1;
}
더 짧은 코드
위에 코드처럼 굳이 배열 두개를 만들 필요가 없었다. [종류 이름: 개수] 형태의 object를 이용했다.
function solution(clothes) {
var answer = 1;
let c =[];
for (let i of clothes){
if(!c[i[1]]){c[i[1]] =1;}
else{c[i[1]] +=1;}
}
for(let i in c){ //object는 of 사용 안됨
answer *= (c[i]+1);
}
return answer-1;
}
📖다른 풀이
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;
}
function solution(clothes) {
let answer = 1;
const obj = {};
for(let arr of clothes) {
obj[arr[1]] = (obj[arr[1]] || 0) + 1; //인상적인 코드
}
for(let key in obj) {
answer *= (obj[key]+1);
}
return answer - 1;
}
✅checkpoint!
for(let i of arr) | arr의 요소 순회 |
for(let i in arr) | arr의 인덱스 순회 |
arr.includes(value) | true, false 반환 |
arr.indexOf(value) | 요소(value)의 첫번째 인덱스 값 반환 |
reduce란? | 배열의 각 요소에 대해 주어진 리듀서 (reducer) 함수를 실행하고, 하나의 결과값을 반환 |
n_arr = arr.reduce((sum,cv) => sum + cv,0); | 배열의 값 합치기 |
a[i] = a[i] ? a[i]+1 : 1 | a[i]가 있으면 그 값에 +1, 없으면 1 |
a[i] = (a[i] || 0) +1 | a[i]가 있으면 그 값에 +1, 없으면 1 |
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Javascript]할인행사 (0) | 2023.07.26 |
---|---|
[프로그래머스][Javascript]괄호 회전하기 (0) | 2023.07.26 |
[프로그래머스][Javascript]숫자 변환하기 (0) | 2023.07.21 |
[프로그래머스][Javascript]땅따먹기 (0) | 2023.07.20 |
[프로그래머스][JavaScript]연속 부분 수열 합의 개수 (0) | 2023.07.19 |