[6/1] 영어 끝말잇기

이경준·2021년 6월 1일
0

코테

목록 보기
27/140
post-custom-banner

문제

내 코드

def solution(n, words):
    answer = []
    
    for i in range(1, len(words)):
        #중복된 단어
        if (words[i] in words[:i]):
            answer.append((i%n)+1)
            answer.append((i//n)+1)
            break
        #오답
        if (words[i-1][-1] != words[i][0]):
            answer.append((i%n)+1)
            answer.append((i//n)+1)
            break

    if (answer == []):
        answer = [0,0]

    return answer

풀이

  1. for문을 돌린다.
    1) 이전까지의 리스트에 해당 단어가 존재하면 사람과 차례를 answer에 추가하고 반복문을 끝낸다.
    2) 이전 단어의 마지막과 해당 단어의 처음이 다르면 사람과 차례를 answer에 추가하고 반복문을 끝낸다.
  2. 모두 정답이면 answer를 임의로 [0, 0]으로 지정한다.

효율적인 코드

def solution(n, words):
    answer = []
    
    for i in range(1, len(words)):
        if (words[i] in words[:i] or words[i-1][-1] != words[i][0]):
            answer.append((i%n)+1)
            answer.append((i//n)+1)
            break
    else:
        answer = [0,0]

    return answer

피드백

  • for문 안에 있는 if문 두개를 or을 사용해서 하나로 합쳤다.
  • for-else문을 사용하여 if문 하나를 줄였다.

배운 것

  • (for / while) - else문 : 반복문 도중 break가 되지 않고 끝까지 반복문이 실행됐을 경우 else에 있는 코드를 실행한다.
profile
The Show Must Go On
post-custom-banner

0개의 댓글