문제
내 코드
def solution(n, words):
answer = []
for i in range(1, len(words)):
#중복된 단어
if (words[i] in words[:i]):
answer.append((i%n)+1)
answer.append((i//n)+1)
break
#오답
if (words[i-1][-1] != words[i][0]):
answer.append((i%n)+1)
answer.append((i//n)+1)
break
if (answer == []):
answer = [0,0]
return answer
풀이
- for문을 돌린다.
1) 이전까지의 리스트에 해당 단어가 존재하면 사람과 차례를 answer에 추가하고 반복문을 끝낸다.
2) 이전 단어의 마지막과 해당 단어의 처음이 다르면 사람과 차례를 answer에 추가하고 반복문을 끝낸다.
- 모두 정답이면 answer를 임의로 [0, 0]으로 지정한다.
효율적인 코드
def solution(n, words):
answer = []
for i in range(1, len(words)):
if (words[i] in words[:i] or words[i-1][-1] != words[i][0]):
answer.append((i%n)+1)
answer.append((i//n)+1)
break
else:
answer = [0,0]
return answer
피드백
- for문 안에 있는 if문 두개를 or을 사용해서 하나로 합쳤다.
- for-else문을 사용하여 if문 하나를 줄였다.
배운 것
- (for / while) - else문 : 반복문 도중 break가 되지 않고 끝까지 반복문이 실행됐을 경우 else에 있는 코드를 실행한다.