문제 설명
프로그래머스 레벨 2의 문제로 Summer/Winter Coding에 출제된 문제입니다.
문제가 길지만 굉장히 간단한 문제입니다. 영어 끝말잇기를 할 때 사용된 단어들이 순서대로 주어지고 n명이 진행할 때 몇번째 사람이 몇 번째 라운드에서 탈락했는지 구하는 문제입니다.
제한 사항은 간단한 내용입니다. 중복된 단어 혹은 끝말을 잇지 못한 단어를 말한 사람이 탈락하게 됩니다.
예를 들어 입출력 1번에 tank는 두 번 사용되어 두 번째에 tank를 말한 사람이 탈락합니다.
또한 입출력 3번에 never이라는 단어 다음 now라는 단어가 사용되었습니다. 이 또한 탈락합니다.
풀이
def solution(n, words: list):
answer = []
for i in range(len(words)):
if i != 0:
if words[i - 1][-1] != words[i][0]:
return [i % n + 1, i // n + 1]
if words[i] in words[:i]:
return [i % n + 1, i // n + 1]
return [0, 0]
변수 설명
i: words를 순회하는 인덱스 이자 몇번째로 사용한 단어인지 알 수 있습니다.
간단 설명
사용된 단어만큼 순회하며 이전 단어의 가장 마지막 글자와 현재 단어의 가장 첫 글자를 비교합니다.
만약 다르다면 [ 현재 사람의 번호, 현재 라운드 ]를 반환합니다.
만약 이전까지 사용된 단어들 중 현재 단어가 포함되어있다면 마찬가지로 [ 현재 사람의 번호, 현재 라운드 ]를 반환합니다.
탈락자가 없이 끝났다면 [ 0, 0 ]을 반환합니다.
아마 어렵지 않은 문제라 코드로 옮기는 부분만 확인하면 쉽게 풀 수 있는 문제였습니다.
'개발 > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] 올바른 괄호 (0) | 2021.02.26 |
---|---|
[프로그래머스] 소수 찾기 (0) | 2021.01.31 |
[프로그래머스] 삼각 달팽이 (0) | 2021.01.29 |
[프로그래머스] 숫자의 표현 (0) | 2021.01.28 |
[프로그래머스] 폰켓몬 (0) | 2021.01.28 |