순회한 단어들은 리스트에 넣어 안에 있는 지 not in 배열 을 써서 확인하고, 알파벳의 끝 단어와 앞 단어가 같은지 확인을 AND 연산자를 써서 확인한다.
탈락자에 해당하는 반환 값은 나머지 연산자와 몫을 구하는 연산자에 +1을 더하여 계산한다.
def solution(n, words):
answer = []
for i in range(0,len(words)-1):
if(words[i][-1] == words[i+1][0]):
print("True")
else:
print("False")
return answer
for i in range(0,len(words)-1):
for j in range(i+1,len(words)):
if(words[i]==words[j]):
print(words[j])
print(j)
break
def solution(n, words):
answer = []
a=len(words)
flag=0
for i in range(0,len(words)-1):
if(words[i][-1] == words[i+1][0]): #앞 단어가 뒷 단어와 일치하는가 맞다면
# print("True")
flag=1
else: #아니라면 바로 잡아냄
# print("False")
# print(words[i+1])
# print(i+1)
x=(i+1)+1
answer.append(x%n)
answer.append((x//n)+1)
#앞 단어가 뒷 단어와 일치하는가 맞다면
if(flag==1):
#중복된 단어를 갖고있는가 확인
for i in range(0,len(words)-1):
for j in range(i+1,len(words)):
if(words[i]==words[j]): #중복된 단어를 갖고있으면
# print(words[j])
# print(j)
y=j+1
if(y%n==0):
answer.append((y%n)+n)
answer.append((y//n))
else:
answer.append(y%n)
answer.append((y//n)+1)
break
#앞 단어가 뒷 단어와 일치도 하고 중복된 단어를 갖고있지 않음
if(len(answer)==0):
answer.append(0)
answer.append(0)
return answer
하지만..!!! 틀린 답이라고 나왔다.. 잘 구분해서 접근했다고 생각했는데 코드를 너무 복잡하게 짜기도 했고, 그 과정에서 놓치는 부분이 있을 거 같다. 좀 더 코드를 작성하다가 결국 다른 사람의 코드를 참고하여 풀었다.
def solution(n, words):
answer = [0,0]
cnt = 0 # 탈락번호,차례 계산할 변수
checks = [] # 나온 단어 확인할 리스트
checks.append(words[0])
for i in range(1, len(words)): # 단어 순회하면서
cnt += 1
# 아직 안나온 단어이면서 & 앞 단어의 마지막 알파벳과 일치하면 checks 리스트에 넣음 (pass)
if words[i] not in checks and list(words[i-1])[-1] == list(words[i])[0]:
checks.append(words[i])
else: # (fail)
answer[0] = cnt%n +1 # 탈락번호
answer[1] = cnt//n +1 # 탈락차례
break
return answer
너무 간단하게 나와서 당황스러웠다.. 이 문제 꼭 다시 풀 예정이다!!!!
잘 보고 갑니다 😊