문제 확인

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이

  • 중복 여부를 확인하기 위해서 set()을 사용했고, 그에 따라 마지막 단어를 확인하는 변수도 활용했다.
  • words의 길이가 50 정도로 작은 편이기 때문에, 리스트를 사용해서 마지막 단어, 중복 여부 확인을 동시에 하는 것이 더 좋았을 거 같다.   
# 정답 : (먼저 탈락하는 사람의 번호, 몇 번째 차례에 탈락)
def solution(n, words):
    answer = [0, 0]
    # 중복 단어 체크
    word_set = set()
    last_word = ""
    # 끝말잇기 시작
    for idx, word in enumerate(words):
        # 초기 문자 없는 경우
        if not last_word:
            last_word = word
            word_set.add(last_word)
            continue
        # 끝말잇기 실패 처리
        if word in word_set or word[0] != last_word[-1]:
            answer = [idx % n + 1, idx // n + 1]
            break
        # 정상적으로 진행
        else:
            last_word = word
            word_set.add(last_word)
    return answer