hye-log

[프로그래머스]영어 끝말잇기(Python) 본문

CodingTest/Programmers

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

iihye_ 2022. 9. 30. 19:18

0. 문제 링크

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

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

1) 1~n명이 돌아가면서 한 단어씩 말함

2) 끝말잇기 규칙에 따라 첫 번째 글자는 이전 단어의 마지막 글자와 같아야 함

3) 이전에 사용된 단어와 중복이 되면 안 됨

 

2. 입출력

# input
n = 3
words = ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"]

# output
result = [3, 3]

 

3. 코드

def solution(n, words):
    answer = [0, 0]                                                         # [0]번째 사람이 [1]번째로 말함

    for i in range(1, len(words)):
        if words[i][0] == words[i-1][-1] and words[i] not in words[0:i]:    # 마지막 문자로 시작하고, 처음 등장하는지
            pass
        else:
            answer = [(i % n) + 1, (i // n) + 1]
            break

    return answer

 

실행 결과

 

4. 회고

처음에는 단어를 반복하는 i, 사람을 반복하는 j로 이중 for문을 사용했지만, 몫과 나머지를 이용하여 for문 하나로도 코드를 간결하게 작성할 수 있었다. 단어의 앞 글자가 이전 단어의 마지막 글자와 같도록 하고, 이전에 말한 단어가 중복되지 않는지를 확인하기 위해서 if문을 작성하고, pass를 사용했다. 반대의 케이스는 else 문에서 구현하고 answer가 정해지면 break를 통해 반복문을 반복하지 않는 것으로 정리했다.

 

5. Github

https://github.com/iihye/Algorithm/blob/main/Programmers/english_endtalk.py

 

GitHub - iihye/Algorithm

Contribute to iihye/Algorithm development by creating an account on GitHub.

github.com

 

728x90
Comments