プログラマー:コレクション辞書(level 2)


質問する



高手の解答

function solution(words) {
  return words.split('').reduce((r, c, i) => r + [781, 156, 31, 6, 1][i] * ['A', 'E', 'I', 'O', 'U'].indexOf(c) + 1, 0);
}
最初の字が「A」の単語は781個あります
2番目のアルファベットが「A」の単語は156個あり、
3番目のアルファベットが「A」の単語は30個あり、
4番目のアルファベットが「A」の単語は6つあります.
5番目の字が「A」の単語が1つあります.
例えば「EUO」を考えてみましょう
最初の位置が「E」より小さい単語は1*781個です現在、次の位置の文字がない場合は、答えは1で、もしあれば、答えは1+「他の場合の数字」です.
((781 ✖️ 1) + (156 ✖️ 4) + (31 ✖️ 3) + 1)
△プラス1の理由は、「A」のように2番目の位置のない単語を考えるためです.
ソース:https://blog.naver.com/PostView.naver?blogId=jinhan814&logNo=222488988156&categoryNo=0&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView