알고리즘

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

j9972 2023. 6. 28. 15:56
728x90

1.  문제

https://school.programmers.co.kr/learn/courses/30/lessons/12981

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2. 접근

1. 이 문제는 문제를 천천히 따라가면 된다.

2. words에서 단어를 하나씩 뽑는다

3. check라는 리스트를 만들고 len(check) == 0이면, word를 넣어주고, 길이가 0이 아니라면 check리스트의 가장 마지막단어의 가장 마지막 문자와 word의 첫번째 문자와 비교를 해서 같다면 넣어주고 틀리다면, 사람수, 차례를 증가시켜 종료시켜 준다

4. 단어마다 사람 수는 증가하는데 사람수(ppl) == n+1 이라면, 한바퀴 돈거니까 ppl = 1, turn += 1해준다!!

 

3.  풀이

def solution(n, words):
    ans = [0,0]
    check = []
    
    turn = 1
    ppl = 0
    
    while len(words) != 0:
        word = words.pop(0)
        
        if word not in check:
            if len(check) == 0:
                check.append(word)        
            else:
                if check[-1][-1] == word[0]:
                    check.append(word)
                else:
                    ppl += 1
                    if ppl == n+1:
                        ppl = 1
                        turn += 1
                    ans = [ppl,turn]
                    break
        else:
            ppl += 1
            if ppl == n+1:
                ppl = 1
                turn += 1
            ans = [ppl,turn]
            break

        ppl += 1
        if ppl == n+1:
            ppl = 1
            turn += 1
            

    return ans