240709 TIL #446 CT_영어끝말잇기

김춘복·2024년 7월 8일
0

TIL : Today I Learned

목록 보기
446/571

Today I Learned

오늘도 파이썬으로 코테 연습!


CT_영어끝말잇기

https://school.programmers.co.kr/learn/courses/30/lessons/12981

문제

1~n명이 끝말잇기를 한다. 이들이 말한 단어가 리스트 words로 입력된다. 앞의 사람이 말한 단어의 끝 글자로 시작하지 않으면 틀리고, 이미 말했던 단어를 말하면 틀린다. 가장 먼저 탈락하는 사람의 번호와 자신의 몇번째 차례에 탈락하는지를 리스트에 담아 반환해라.

입력
n=3
words = ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"]
출력 [3,3]


문제 풀이

  • 중복 검증은 set을 이용해서 한다. words를 순회하면서 틀리지 않은 단어는 set에 넣고 그 set에 해당 단어가 있으면 틀렸다고 판단한다.
    연산자 in을 활용한다.

  • 단어 검증은 list와 string의 slicing을 활용한다. 첫 단어는 index에러가 나므로 range(1,length)로 진행한다.

  • (i / n) 하면 float로 반환하지만 (i // n)을 쓰면 int로 반환한다.


Python 코드

def solution(n, words):
    answer = [0, 0]
    length = len(words)
    used_words = set()
    used_words.add(words[0])
    
    for i in range(1, length):
        if words[i] in used_words or words[i][0] != words[i-1][-1]:
            person = (i % n) + 1
            order = (i // n) + 1
            return [person, order]
        
        used_words.add(words[i])
    
    return answer
profile
Backend Dev / Data Engineer

0개의 댓글