😎풀이

  1. words의 각 단어를 순회하며 해당 문자를 비트마스크 화
  2. words를 2중 순회하며 아무 문자도 겹치지 않은 쌍이 발견될 경우 해당 문자열의 길이를 곱해 최댓값과 비교
  3. 탐색된 최대 길이 반환
function maxProduct(words: string[]): number {
    const n = words.length
    const bitMasks = Array(n).fill(0)
    let maxLen = 0
    for(let i = 0; i < n; i++) {
        for(const char of words[i]) bitMasks[i] |= 1 << char.charCodeAt(0)
    }
    for(let i = 0; i < n; i++) {
        for(let j = i + 1; j < n; j++) {
            if((bitMasks[i] & bitMasks[j]) === 0) maxLen = Math.max(maxLen, words[i].length * words[j].length)
        }
    }
    return maxLen
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글