[프로그래머스 Lv2] 영어 끝말잇기 (파이썬)

Jewon Joel Park·2022년 7월 28일
0

Programmers-solution

목록 보기
33/34

문제 링크


문제 설명

영어 끝말잇기에서 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락(같은 단어를 말하거나 끝말잇기에 실패하는 경우)하는지를 반환하는 함수 작성


풀이 코드

def solution(n, words):
    user, rnd = 0, 0
    marked = [words[0]]
    
    for i in range(1, len(words)):
        if words[i] not in marked and words[i][0] == words[i-1][-1]:
            marked.append(words[i])
        else:
            user = i % n + 1
            rnd = i // n + 1
            break
    return [user, rnd]

코드 설명

  1. 반환할 값인 사용자번호user와 차례 rnd를 각각 0으로, 사용한 단어를 저장할 배열 marked의 초기값을 첫 단어인 words[0]으로 설정
  2. for Loop으로 인덱스 1부터 주어진 배열 words의 길이-1 만큼 순회하며 해당 단어가 marked에 존재하는지, 그리고 단어의 첫 문자가 이전 단어의 마지막 문자와 일치하는지를 확인
  3. 2에서 True일 경우 marked에 해당 단어 추가
  4. 2에서 False일 경우는 끝말잇기에 실패한 것이므로 아래 과정을 수행
    • 사용자 번호는 인덱스를 n으로 나눈 나머지이며, 인덱스를 번호화 해야하므로 +1
    • 라운드 번호는 인덱스를 n으로 나눈 몫이며, 인덱스를 번호화 해야하므로 +1
    • 추가적인 절차를 거치게 되면 각 숫자가 업데이트 되므로 break
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글