[PS] Programmers/코딩기초트레이닝/Day20: 문자열 묶기

2023. 6. 9. 15:57✨ PS(ProblemSolving)

문제

문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요.

  • 제한사항
    1 ≤ strArr의 길이 ≤ 100,000
    1 ≤ strArr의 원소의 길이 ≤ 30
    strArr의 원소들은 알파벳 소문자로 이루어진 문자열입니다.

전략

  • obj를 만들어, strArr 요소들의 길이를 key, 횟수를 value로 지정
  • obj 안의 value들을 비교하여 최고의 value 반환

코드

func solution(strArr) {
    let answer = 0;
    let obj = {};

    strArr.forEach(ele => {
        let leng = ele.length;
        obj[leng] = obj[leng] ? ++obj[leng] : 1})

    let max = 0;
    for (leng in obj) {
        max = obj[leng] > max ? obj[leng] : max}

    answer = max;
    return answer;
}

주목할 점

  • ++obj[leng]
    obj[leng] + 1 의 결과가 나오려면 ++를 앞에 붙여야함.
    뒤에 붙이면 +1한 결과값이 나오지 않음.

  • max = obj[leng] > max ? obj[leng] : max
    max = obj[leng] > max && obj[leng] 을 써버리면, 부등호가 성립되지 않을 경우에
    기존 max가 할당되지 않고 1이 할당되어 error 발생.