먼저 이건 내 풀이 !!!!
def solution(n, words):
a=[]
for i in range(len(words)):
if len(a)==0:
a.append(words[i])
else:
if words[i] in a:
a.append(words[i])
return [i%n+1,i//n+1]
else:
a.append(words[i])
if a[-1][0] != a[-2][-1]:
return [i%n+1,i//n+1]
if len(a)==len(words):
return [0,0]
그리고 문제 푼 후 한줄 줄인 코드!
def solution(n, words):
a=[words[0]]
for i in range(1,len(words)):
if words[i] in a:
a.append(words[i])
return [i%n+1,i//n+1]
else:
a.append(words[i])
if a[-1][0] != a[-2][-1]:
return [i%n+1,i//n+1]
if len(a)==len(words):
return [0,0]
첫번째 코드와 두번째 코드의 차이
첫번째 코드는 처음에 a를 빈 리스트로 준 후
if len(a)==0:
a.append(words[i])
if문을 이용하여 a리스트가 비어있으면 다른 조건 보지않고 일단 데이터를 채우기로 시작한 반면, 두번째 코드는 처음부터 a 리스트에 words의 첫번째 원소를 채우고 시작한 아주 조그마한 차이입니다 !
내가 생각한 핵심
이 문제의 핵심은 for문 안의 if 문에서 만약 현재 단어가 이미 a리스트 안에 존재한다면 문제 설명의 4번 조건에 어긋나서 탈락!
else문은 현재 단어의 가장 앞글자가(a[-1][0]) 하나 전 단계의 단어의 마지막 글자와(a[-2][-1]) 다르면 탈락인 문제 설명의 3번 조건에 어긋나서 탈락! 이 두가지가 핵심이다 !!