https://school.programmers.co.kr/learn/courses/30/lessons/12981
내 풀이
def solution(n, words):
answer=[]
candi = []
set_words = set(words)
if len(set_words) != len(words):
for i in range(len(words)):
if words[i] in candi:
answer.append((i%n)+1,)
answer.append(i//n+1)
return answer
candi.append(words[i])
else:
for i in range(len(words)-1):
print(words[i][-1],words[i+1][0])
if words[i][-1] != words[i+1][0]:
answer.append(((i+1)%n)+1,)
answer.append((i+1)//n+1)
return answer
else:
return [0,0]
def solution(n, words):
for i in range(len(words)-1):
if words[i][-1] != words[i+1][0] or words[i+1] in words[:i]:
return [((i+1)%n+1),((i+1)//n)+1]
else:
#print('for debug')
return [0,0]
최초에 풀 때는 아예 경우를 달리두고 풀었다
1) 겹치는 단어가 있을 때는 길이가 달라지니까 그거를 셋으로 바꿔서 중복값을 없애고 길이를 비교하는 멍청한짓을 했다
2)겹치는 단어가 없을 때 끝말잇기의 규칙을 어기는 경우
근데 생각해보니까 그럴 필요가 없었다.
그래서 더 간단하게 풀었다. 하나 고려해야할 것은 중복검사를 할때 i+1부터 해야한다는것. 어차피 최초값은 중복일 리가 없고
i로 중복값을 검사하면 맨 마지막에 중복값이 나올경우를 거를 수가 없기 때문이다.
다른사람의 풀이
def solution(n, words):
for p in range(1, len(words)):
if words[p][0] != words[p-1][-1] or words[p] in words[:p]: return [(p%n)+1, (p//n)+1]
else:
return [0,0]
아니면 이분처럼 1부터 시작해도 방법일거같다.
'취준 > 프로그래머스' 카테고리의 다른 글
야근 지수 - 파이썬 (0) | 2022.09.13 |
---|---|
행렬의 곱셈 - 파이썬 (0) | 2022.09.12 |
k진수에서 소수 개수 구하기 - 파이썬 (0) | 2022.09.11 |
최고의 집합 - 파이썬 (0) | 2022.09.11 |
주차 요금 계산 - 파이썬 (0) | 2022.09.09 |