728x90
반응형
SMALL
✏️ 문제
문제 파악
중복된 단어가 있는 지 확인은 words 배열 내에 해당 단어를 count 했을 때 2 이상인 지로 확인했다.
중복된 단어가 또 나오는 지 확인할 때 단순히 중복된 단어가 있으면 bool 상태만 변경해서 중복된 단어가 또 나왔는 지 확인하는 방향으로 코드를 짰다.
근데 bool 타입으로 하면 배열 내에 중복된 단어가 두 개 이상일 때 앞에 중복되었다고 체크한 단어랑 지금 단어가 같은 지 확인이 안됐다.
그래서 중복되면 dup라는 배열에 넣고 뒤에 중복 단어가 나오면 dup 배열에 있는 지 확인했다.
dup 배열에 있으면 단어를 중복해서 말한 거고, dup 배열에 없으면 단어를 중복해서 말한 게 아니게 된다.
코드
def solution(n, words):
index = -1
dup = []
for i in range(len(words)-1):
cnt, net = words[i], words[i+1]
# 끝말 안잇기
if cnt[-1] != net[0]:
index = i+1
break
# 중복
if words.count(cnt) > 1:
if cnt not in dup:
dup.append(cnt)
else:
index = i
break
if words.count(net) > 1:
if net not in dup:
dup.append(cnt)
else:
index = i+1
break
answer = [(index % n) + 1, (index // n) + 1] if index != -1 else [0, 0]
return answer
- 다른 사람의 풀이
def solution(n, words):
answer = []
turn = 0
wordList = [words[0]]
for idx in range(1, len(words)):
if words[idx-1][-1] != words[idx][0] or words[idx] in wordList:
turn = idx
break
wordList.append(words[idx])
answer = [turn % n + 1, turn // n + 1]
if turn == 0:
answer = [0, 0]
return answer
한 번 지나간 단어들을 wordList라는 리스트에 넣어서 words 배열의 요소를 훑을 때 wordList에 있으면 중복된 단어라고 체크하셨다.. 훨씬 간단한 듯
728x90
반응형
LIST
'PS > 프로그래머스' 카테고리의 다른 글
[Python] n^2 배열 자르기 (0) | 2024.12.09 |
---|---|
[Python] 카펫 (1) | 2024.11.08 |
[Python] 구명보트 (0) | 2024.11.08 |
[Python] 점프와 순간 이동 (0) | 2024.11.07 |
[Python] 가장 많이 받은 선물 (0) | 2024.11.03 |