영어 끝말 잇기 [python3]

김태경·2023년 5월 20일
0

코딩테스트

목록 보기
8/12


먼저 이건 내 풀이 !!!!

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

그리고 문제 푼 후 한줄 줄인 코드!

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

첫번째 코드와 두번째 코드의 차이

첫번째 코드는 처음에 a를 빈 리스트로 준 후

        if len(a)==0:
            a.append(words[i])

if문을 이용하여 a리스트가 비어있으면 다른 조건 보지않고 일단 데이터를 채우기로 시작한 반면, 두번째 코드는 처음부터 a 리스트에 words의 첫번째 원소를 채우고 시작한 아주 조그마한 차이입니다 !

내가 생각한 핵심

이 문제의 핵심은 for문 안의 if 문에서 만약 현재 단어가 이미 a리스트 안에 존재한다면 문제 설명의 4번 조건에 어긋나서 탈락!
else문은 현재 단어의 가장 앞글자가(a[-1][0]) 하나 전 단계의 단어의 마지막 글자와(a[-2][-1]) 다르면 탈락인 문제 설명의 3번 조건에 어긋나서 탈락! 이 두가지가 핵심이다 !!

profile
신입 ^3^

0개의 댓글