문제
문자열 배열 strArr가 주어질 때 길이가 같은 문자열들을 그룹으로 묶고, 그 중 가장 갯수가 많은 그룹의 크기를 찾아 반환
내 해답
function solution(strArr) {
// 길이별 그룹을 저장할 빈 객체 생성
const groups = {};
// 주어진 문자열 배열을 순회하며 그룹 형성과 카운트
strArr.forEach(str => {
const length = str.length; // 현재 문자열의 길이
groups[length] = (groups[length] || 0) + 1; // 해당 길이 그룹의 값을 증가시킴
});
// 그룹 중 가장 큰 값을 찾아 반환
return Math.max(...Object.values(groups));
}
- groups : 빈 객체 생성
- groups[length] : 값이 존재한다면 이미 해당 그룹에 값을 가지고 있어 그 값을 가져와 +1
- 값이 존재하지 않는다면 0을 반환후 +1
- ["a","bc","def"..] 예시
- 첫번째 문자열 "a" 길이는 1 groups[1]에 1을 더한다 이때 groups[1]은 존재하지 않아 0이 된 후 1을 더해 groups[1]에 1이 저장
- Object.values(groups) 은 groups 객체의 값들을 배열로 추출하는 역할을 한다
- 배열로 만들어진 후 Math.max를 사용하여 가장 큰 값을 찾아 반환
다른 해답
function solution(strArr) {
let ans = Array(31).fill(0); // 길이별 그룹 개수를 저장할 배열 생성
for (let s of strArr) ans[s.length]++; // 주어진 문자열 길이의 그룹 개수 증가
return Math.max(...ans); // 가장 큰 그룹 크기 반환
}
function solution(strArr) {
const aa = strArr.map((v)=>v.length); // 문자열 배열의 길이만을 추출한 배열 생성
const count = {}; // 길이별 그룹 개수를 저장할 객체 생성
for (let i = 0; i < aa.length; i++) {
count[aa[i]] = count[aa[i]] ? count[[aa[i]]] + 1 : 1; // 길이별 그룹 개수 증가
}
return Object.values(count).sort((a, b) => b - a)[0]; // 가장 큰 그룹 크기 반환
}
머리가 돌아가지 않아..구글링과 chat gpt의 힘을 빌려 풀었다..이게 푼건가 싶기도 하지만 ㅠㅠ 왜 머리가 턱하고 막힌 기분이드는건지...
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
[javascript] for..of / for문 / indexOf를사용한 알파벳 등장 횟수 계산 (0) | 2023.08.25 |
---|---|
javascript 조건에 맞게 수열 변환 (0) | 2023.08.22 |
[Lv0] js 정수 배열에서 숫자 n이 총 몇 개 들어있는지 (0) | 2023.08.18 |
[Lv0] js 배열내 2의 영역 (0) | 2023.08.17 |
[Lv0] js for ...of 를 사용한 수열과 쿼리 (0) | 2023.08.10 |