def valid(tly,word) n=word.size (1...n).each do|i| pre=word[...i] suf=word[i...] return true if tly.include?(pre)&&(tly.include?(suf)||valid(tly,suf)) end false end # @param {String[]} words # @return {String[]} def find_all_concatenated_words_in_a_dict(words) tly=words.tally ans=[] words.each do|w| vs=valid(tly,w) ans<<w if vs end ans end

Hard가 데일리 문제로 나오는 경우도 있군요... 팁 하나 드리자면 concatenated words가 적어도 2개 이상의 더 짧은 단어로 구성된 단어라고 되어 있지만 이 "더 짧은 단어" 중에 서로 다른 게 2개 이상일 필요는 없습니다. 예시로 입력이 ["cat","catcat","catcatcat"]이면 답으로 ["catcat","catcatcat"]을 출력해야 합니다.