https://programmers.co.kr/learn/courses/30/lessons/12981
<문제에서 주목해야 할 사항>
ⓐ 한 글자인 단어는 인정되지 않습니다.
ⓑ 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.
ⓒ 이전에 등장했던 단어는 사용할 수 없습니다.
ⓓ 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.
이정도만 명심해두고 문제 풀면 나름 금방 풀 수 있다.
[정답]
1. 사람의 번호를 num으로 잡고 1로 초기화한다.
2. 이전에 등장했던 단어를 추가할 리스트 past를 정의한다.
3. 만약 words[i]의 길이가 1이면, break. →ⓐ
4. 만약 words[i]가 리스트 past에 있다면, break. →ⓒ
5. 만약 리스트 past에 단어가 들어있고 words[i]의 첫번째 문자와 past[i-1]의 마지막 문자가 다를 경우, break. →ⓓ
6. 3~5에 해당하지 않는다면, 다음 비교로 넘어가기 위해 리스트 past에 words[i]를 넣는다. 만약 num이 n일때, 다시 1번 사람으로 num=1해주고 아니면 num+=1해준다. →ⓑ
7. 만약 for문을 다 돌고도 이상이 없으면 즉 끝말잇기가 정상적으로 진행되었다면, 리스트 past와 words는 같을 것이다. 그러므로 answer에 [0,0]를 더한다.
8. 만약 끝말잇기가 정상적으로 진행되지 않았다면, 즉 리스트 past와 words가 같지 않다면, answer은 [번호,차례]를 넣어주어야 한다. 그러므로 사람의 번호 num을 append하고, 차례를 계산한 len(past)//n+1을 append한다.
'알고리즘 공부 > 프로그래머스 > Python3' 카테고리의 다른 글
[프로그래머스] 전화번호 목록 (0) | 2020.12.04 |
---|---|
[프로그래머스] H-Index (0) | 2020.12.03 |
[프로그래머스] 체육복 (0) | 2020.12.02 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (0) | 2020.11.29 |
[프로그래머스] 모의고사 (0) | 2020.11.28 |