1 분 소요

문제 링크

내 풀이

def solution(n, words):
    word_list = [words[0]]
    for word in words[1:]:
        word_list.append(word)
        if word in word_list[:-1] or word_list[-2][-1] != word[0]:
            if len(word_list) % n == 0:
                number = n
                turn = len(word_list) // n
            else:
                number = len(word_list) % n
                turn = len(word_list) // n + 1
        
            return [number, turn]
        if len(words) == len(word_list):
            return [0,0]

다른 풀이

def solution(n, words):

    words_set = set() # 사용된 단어를 저장하기 위한 set() 생성 / 중복 방지용
    words_set.add(words[0]) # 첫 번째 단어를 세트에 추가
    
    # 두 번째 단어부터 마지막 단어까지 순회
    for i in range(1, len(words)):
        
        # 만약 현재 단어가 이미 사용된 단어이거나
        # 이전 단어의 마지막 글자와 현재 단어의 첫 글자가 다르다면
        if (words[i] in words_set) or (words[i-1][-1] != words[i][0]):
            
            # 탈락자의 번호와 차례를 반환
            # 번호는 인덱스를 사람 수로 나눈 나머지에 1을 더한 값
            # 차례는 인덱스를 사람 수로 나눈 몫에 1을 더한 값
            return [(i%n)+1, (i//n)+1]
        
        # 현재 단어를 사용된 단어의 set()에 추가
        words_set.add(words[i])
        
    # 모든 단어가 규칙에 맞게 사용되었다면 [0, 0]을 반환
    return [0, 0]
출처: https://1ets-just-do-it.tistory.com/126 [파이썬은 신이야🔥🔥🔥:티스토리]

풀이 해석

  • 내 풀이와 비슷

배울 점

  • for문 끝날 때 return [0,0]으로 마무리

댓글남기기