728x90

▶객체(Dictionary) 활용한 간단한 문제가 있어 정리해보고자 합니다.

 

 

문제설명

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

 

제한사항

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

입출력 예 & 설명 

입출력 예 #1

  • 각 문자열들을 길이에 맞게 그룹으로 묶으면 다음과 같습니다.

  • 개수의 최댓값은 2이므로 2를 return 합니다.

 

나의 풀이

 

key 값과 value를 각각 저장하기 위하여 앞선 객체(Dictionary) 포스팅에서 알아보았던 ▶객체(Dictionary)를 사용했습니다.

문자열 길이(key) 문자열 개수(value)
1 2
2 2
3 1

 

인덱스를 문자열로 접근이 가능하다는 객체의 특성과 위 표처럼 key와  value를 pair형식으로 저장하기 위하여 객체(Dictionary)를 사용했습니다.

 

먼저 2번째 줄에서 빈 객체 dict을 선언해 주고, 4번째 줄에서 for of문을 사용하여 문자열 배열 strArr의 요소에 접근했습니다.

 

그리고 위 표처럼 key값(인덱스)을 문자열의 길이로 저장해 줍니다.

 

그리고 예전 nullish 포스팅에서 알아본 nullish 연산자 '??'를 사용하여 왼쪽 피연산자null이나 undefined일 때 오른쪽 피연산자를 반환해 줍니다.

 

x가 담긴 딕셔너리가 있으면 그 인덱스에 x값을 넣어주고 만약 이전에 등장한 적이 없는 값이라면 빈 딕셔너리를 담아줍니다. 그리고 해당 인덱스에 값을 넣어줍니다.

 

말이 어려운데 쉽게 표현하자면 위의 그림을 보시면 이해가 좀 더 쉽습니다.

 

 

x : a일 때 한 번도 등장하지 않았기 때문에 빈 딕셔너리를 넣어주고, push() 함수를 사용하여 x값을 넣어주고, bc 또한 처음 등장하기 때문에 빈 딕셔너리x값을 넣어주었습니다.

 

그리고 d는 길이가 1이기 때문에 dict [1]은 값이 존재하기 때문에 해당 인덱스에 b값을 넣어줍니다. 이런 식으로 strArr의 요소를 끝까지 돌아줍니다.

 

그리고 9번째 줄에서 Object.values 메서드를 사용하여 객체의 값에 접근해 주고, map() 함수를 사용하여 dict의 요소를 [ 'a', 'd' ], [ 'bc' ], [ 'efg' ] → [2, 2, 1] 형식으로 길이로 바꿔줍니다.

 

마지막으로 Math메서드를 사용하여 배열의 요소 중 가장 큰 값(Max)을 반환해 주어 마무리했습니다.

 

 

 

 

 

 

https://pixx.tistory.com/19

 

[JavaScript] nullish 병합 연산자 '??'

nullish 병합 연산자 (??') 란 leftExpr ?? rightExpr let a = 0; let b = a||10; console.log(b); // 10 let c = 0; let d = c??10; console.log(d); // 10 let e = null; let f = e ?? 10; console.log(f); // 10 let g = undefined; let h = g ?? 10; console.log(h)

pixx.tistory.com

 

(JavaScript) 객체(Dictionary) 알아보기

1. 객체(Object) 배열에서는 아이템에 대한 식별자(인덱스)로는 숫자를 사용했습니다. 그렇기 때문에 인덱스를 사용해서 데이터에 접근할 수가 있었습니다. 그러나 숫자가 아닌 문자를 사용하기

pixx.tistory.com