반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12981
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(n, words):
turn = 1
speaker = 1
word_list = []
for i in range(len(words)):
if i== 0:
pass
else:
pre_word=words[i-1]
cur_word = words[i]
word_list.append(pre_word)
if pre_word[-1] != cur_word[0]:
return [speaker,turn]
elif cur_word in word_list:
return [speaker, turn]
if speaker == n:
speaker = 1
turn +=1
else:
speaker += 1
return [0, 0]
먼저 아래의 3개의 변수를 초기화합니다.
- turn : 몇 번째 차례인지 확인하는 변수
- spearker : 몇번 사람이 말을 하는지 확인하는 변수
- word_list : 말한 문자를 저장하는 리스트
그리고 주어진 words 리스트를 반복합니다.
- 이때 가장 첫번째 문자(index = 0)문자는 넘어갑니다.
이전 문자(pre_word)와 현재 문자(cur_word)를 조건에 맞게 확인합니다.
- 조건 1 : 이전 단어의 마지막 문자가 현재 단어의 첫번째 문자와 동일한지
- 조건 2 : 이전 단어가 등장한적이 있는지
그리고 이전 문자를 word_list에 저장합니다.
위의 두 조건을 만족하지 않는다면 현재 말한 사람의 번호(speaker)와 차례(turn)를 반환합니다.
말한 사람의 번호(speaker)와 차례(turn)를 찾기 위하여
speaker 이 주어진 사람(n)과 동일하다면 즉 마지막 사람이 되었다면
다시 첫번째 순서로 바꾸어주고
차례(turn)을 +1을 합니다
위의 조건이 아니라면 speaker를 +1 해줍니다
위의 반복문을 모두 통과하였다면 탈락자가 생기지 않았다는 의미이기 때문에
[0, 0]을 반환합니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 방문 길이 파이썬(Python) (0) | 2022.12.31 |
---|---|
[코딩테스트] 프로그래머스 점프와 순간 이동 파이썬(Python) (0) | 2022.12.28 |
[코딩테스트] 프로그래머스 할인 행사 파이썬(Python) (0) | 2022.12.26 |
[코딩테스트] 프로그래머스 크기가 작은 부분문자열 파이썬(Python) (0) | 2022.12.23 |
[코딩테스트] 프로그래머스 N개의 최소공배수 파이썬(Python) (0) | 2022.12.22 |