Skip to content

Latest commit

 

History

History
40 lines (36 loc) · 1.97 KB

풀이_영어끝말잇기.md

File metadata and controls

40 lines (36 loc) · 1.97 KB

🎀 프로그래머스 영어 끝말잇기

  • Date : 2020.09.14(월)
  • Time : 15분

문제

  • 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.
  1. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.
  2. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.
  3. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.
  4. 이전에 등장했던 단어는 사용할 수 없습니다.
  5. 한 글자인 단어는 인정되지 않습니다.
  • 사람의 수 n과 사람들이 순서대로 말한 단어 words 가 매개변수로 주어질 때, 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는지를 구해서 return 하도록 solution 함수를 완성해주세요.

코드 풀이

    for i in range(0,len(words),1):
        answer[i%n].append(words[i])

: 먼저 현재 이어져있는 끝말잇기를 사람 별로 분류해주는 작업을 했다.

for j in range(0,len(answer[0]),1):
    for k in range(0,n,1):
        if (answer[k][j][:1] == last) and (len(answer[k][j])>1) and (answer[k][j] not in used) :
        # 끝말잇기 조건 3개를 만족하는지를 검수한다.
        # 첫번재 조건 : 마지막에 끝난 단어로 시작했는지
        # 두번째 조건 : 글자 수가 한글자 초과 인지
        # 세번째 조건 : 이미 사용했던 단어가 아닌지
            last = answer[k][j][len(answer[k][j]) - 1:]
            # 끝말잇기 조건을 만족하면 이어진 단어의 마지막 글자를 저장해둔다.
            used.append(answer[k][j])
            # 그리고 사용한 단어는 배열에 저장해둔다.
        else :
            return [k+1,j+1]
            # 만약 조건을 하나라도 만족하지 못한다면 리턴한다.