728x90
반응형
1. 문제 설명
2. 풀이과정
- 탈락자가 생기지 않을 경우 [0, 0]을 반환해야 하므로 기본 정답을 [0, 0]으로 설정한다. answer = [0, 0]
- 사용한 단어들을 저장할 리스트를 생성하고 시작 단어를 추가한다. li = [words[0]]
- 끝말잇기 차례를 나타낼 변수를 생성하고 1로 초기화한다. turn = 1
- 시작 단어는 이미 들어가 있기 때문에 다음 단어부터 각 단어를 추출한다. for i in range(1, len(words))
- 사용한 단어의 리스트에서 이전 값을 저장한다. pre = li[i - 1]
- 현재 이어질 단어를 저장한다. words[i]
- 만약 현재 추출한 단어가 사용한 단어의 리스트에 이미 있거나 이전 단어의 끝 문자가 이어질 단어의 시작 문자와 다르다면(끝말잇기가 올바르지 않다면) if (now in li) or (pre[-1] != now[0])
- 정답 리스트의 첫 번째 값을 탈락자의 번호로 저장하고 answer[0] = i % n + 1
- 정답 리스트의 두 번째 값을 현재 끝말잇기의 차례로 저장한다. answer[1] = turn
- 탈락자가 발생하였으므로 종료한다. break
- 현재 이어진 단어를 사용한 단어 리스트에 추가한다. li.append(now)
- 만약 현재 단어 순서가 마지막 사람이 부른 단어라면 차례를 1 증가시킨다. if (i % n == n - 1): turn += 1
반응형
3. 소스코드
def solution(n, words):
answer = [0, 0]
li = [words[0]]
turn = 1
for i in range(1, len(words)):
pre = li[i - 1]
now = words[i]
if (now in li) or (pre[-1] != now[0]):
answer[0] = i % n + 1
answer[1] = turn
break
li.append(now)
if (i % n == n - 1):
turn += 1
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 문자열 내 마음대로 정렬하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.09 |
---|---|
[프로그래머스] 숫자 문자열과 영단어 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.08 |
[프로그래머스] [1차] 비밀지도 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.08 |
[프로그래머스] 카펫 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.08 |
[프로그래머스] 짝지어 제거하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.07 |
[프로그래머스] 크기가 작은 부분 문자열 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.07 |
[프로그래머스] 최소직사각형 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.07 |
[프로그래머스] 시저 암호 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.07 |