[프로그래머스] 영어 끝말잇기 - 레벨2

eternal moment·2023년 9월 23일
0

2023.09.23 풀이

def solution(n, words):
    answer = []
    arr=[]
    k=0
    for i in words:
        k+=1
        if len(arr)==0:
            arr.append(i)
        elif i in arr:
            break
        elif arr[-1][-1]==i[0]:
            arr.append(i)
        else:
            break
    if len(words)==len(arr):
        answer=[0,0]
    else:
        answer=[(k-1)%n+1, (k-1)//n+1]
    return answer


다른 풀이

  1. 예외 처리를 한 번에.
def solution(n, words):
    answer = [0,0]

    cnt = 0  # 탈락번호,차례 계산할 변수
    checks = []  # 나온 단어 확인할 리스트
    checks.append(words[0])
    for i in range(1, len(words)):  # 단어 순회하면서
        cnt += 1
        # 아직 안나온 단어이면서 & 앞 단어의 마지막 알파벳과 일치하면 checks 리스트에 넣음 (pass)
        if words[i] not in checks and list(words[i-1])[-1] == list(words[i])[0]:
            checks.append(words[i])
        else:  # (fail)
            answer[0] = cnt%n +1  # 탈락번호
            answer[1] = cnt//n +1  # 탈락차례
            break

    return answer
  1. 한 단계 더 나아간
def solution(n, words):
    for i in range(1, len(words)):
        if words[i][0] != words[i-1][-1] or words[i] in words[:i] :
            return [(i%n)+1, (i//n)+1]
    else:
        return [0,0]


check point

  • 조건문에서 같은 동작을 하는 로직은 하나로 묶기

0개의 댓글