- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12981
Lv2 문제고, 스스로 푼 문제다!
문제 이해
이미 말한 단어들을 담는 리스트는 passed로 하고, 조건을 만족하는 단어들을 passed.append()한다
1번 부터 n번까지의 사람의 번호를 식별하기 위해 i를 이용했고, i == n + 1일 때는 다시 1번으로 바꿔주고 이 때 한 사이클을 돌았으니까 count += 1 해준다
passed에 있는 단어를 말하거나 전 사람이 말한 단어의 끝 단어로 시작하는 단어를 말하지 않는 경우 while문을 break 한다. 여기서 주의해야할게 if len(passed) > 0이 없으면, 처음 시작할 때는 passed =[] 이므로 Indexerror가 날 수 있다.
끝말 잇기가 중간에 멈춘경우를 식별하기 위해 flag를 이용했고, 이 값이 False이면 멈춘 사람의 번호와 사이클 횟수를 반환하고 끝까지 간 경우에는 flag == True이므로 [0,0]을 반환해준다
주의해야할 점
1. pass는 연산자이므로, 변수이름으로 사용하면 안된다
2. while문에서 끝말잇기 조건 만족하는 단어 passed.append()하는거 빼먹었다
3. i += 1 빼먹었다
4. return 하는 순서 바꿔서 반환했다
- 정답 풀이 :
def solution(n, words):
m = len(words)
passed = []
i = 1
count = 1
flag = True
while words :
if i == n + 1:
i = 1
count += 1
x = words.pop(0)
if x in passed:
flag = False
break
elif len(passed) > 0:
if passed[-1][-1] != x[0]:
flag = False
break
passed.append(x)
i += 1
if not flag:
return [i, count]
else:
return [0,0]
'코딩테스트 > 기출' 카테고리의 다른 글
[연습문제 / 프로그래머스] 12953번 : N개의 최소공배수 (0) | 2022.09.11 |
---|---|
[스택 / 프로그래머스] 12973번 : 짝지어 제거하기 (0) | 2022.09.11 |
[월간 코드 챌린지 시즌1 / 프로그래머스] 70129번: 이진 변환 반복하기 (0) | 2022.09.08 |
[2020 KAKAO BLIND RECRUITMENT / 프로그래머스] 60057번 : 문자열 압축 (1) | 2022.09.07 |
[Summer Winter Coding(2019) / 프로그래머스] 멀쩡한 사각형 (0) | 2022.09.06 |