영어 엔딩

내 솔루션 1

스택을 사용

def solution(n, words):
    answer = (0,0)
    stack = ()
    
    for i in range(len(words)):
        if not stack:   # stack 비어있으면
            stack.append(word(i))
        
        else:   
            word = stack.pop()
            if word(-1) != words(i)(0): # 이전 끝 글자랑, 현재 첫글자가 다르면
                stack.append(words(i))  # stack에 현재 문자 추가
                
            

    return answer

내 솔루션 2

1. 간단하게 문자열을 검색하면서 앞뒤 문자 비교하기

2. Counter()를 사용하여 중복 문자열을 미리 처리하십시오.

import numpy as np
from collections import Counter

def solution(n, words):
    answer = (0,0)
    
    counter_words = Counter(words)

    if counter_words.most_common()(0)(1) > 1:
        # 중복으로 나온 단어가 있다면 사전 처리
        i = list(filter(lambda x: words(x) == counter_words.most_common()(0)(0), range(len(words))))(-1)
        answer(1) = np.ceil(i / n)
        answer(0) = i % n + 1
        
    else:
        for i in range(len(words)):

            if i > 0 and words(i-1)(-1) != words(i)(0): # 이전 글자의 끝글자와 현재 글자의 첫글자가 다르면
                print('i: ',i)
                print('n: ', n)
                answer(1) = np.ceil((i+1) / n)
                answer(0) = i % n + 1



    return answer

Tekke 10, 14, 15, 16, 18만 통과..

점화가 잘못되었습니다!!!!!!

점화식을 제대로 설정합시다.

for 문의 범위도 틀립니다..

쓰기 및 카운터 X 필요 -> 단어(i) 단어(:i)인지를 비교할 수 있습니다.

올바른 솔루션

def solution(n, words):
    for i in range(1, len(words)):
        if words(i-1)(-1) != words(i)(0) or words(i) in words(:i): # 이전 글자의 끝글자와 현재 글자의 첫글자가 다르거나 해당 문자가 이전 문자에서 있었는지

            return ((i%n) + 1, (i//n )+ 1)

    else:
        return (0,0)