영어 끝말잇기
코딩테스트 연습 - 영어 끝말잇기
3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0]
programmers.co.kr
- 내 풀이
- 테스트케이스 19번만 실패
- 단어의 길이가 1인 경우
- 앞 단어의 끝말과 다른 단어로 시작할 경우
- 단어가 여러개인 경우
- 첫번째 단어의 인덱스 i를 구해서 words[i+1:] 에서 두번째 단어 인덱스 d를 구한다
- 두번째 단어의 순서값 i+d+2
- 원인
→ 3번에서 개수가 여러개인 단어의 첫번째 단어가 1/2번 경우 보다 빠르고 두번째 단어가 1/2번 경우보다 늦은 경우에
1/2번 경우에 대한 답이 나와야 하는데 첫번째 단어가 나오자마자 3번의 경우로 답을 구하게 된다
#n=int(input())
#words=input().split()
import math
def solution(n, words):
answer=[]
if not words:
return [0,0]
last=words[0][0]
for w in words:
if len(w)<2:
return [0,0]
if w[0]!=last:
j=words.index(w)+1
if j%n==0:
answer.append(n)
else:
answer.append(j%n)
answer.append(math.ceil(j/n))
break
last=w[-1]
if words.count(w)>1:
i=words.index(w)
d=words[i+1:].index(w)
idx=i+d+2 #인덱스말고 순서값
if idx%n==0:
answer.append(n)
else:
answer.append(idx%n)
answer.append(math.ceil(idx/n))
break
else:
return [0,0]
return answer
- 내 풀이 - 성공!
- enumerate() 함수 사용하여 인덱스와 값 한번에 호출
- 앞에 나온 단어들을 저장해서 단어가 두번째 나오는 건지 확인
#n=int(input())
#words=input().split()
import math
def solution(n, words):
answer=[]
ex=[]
last=words[0][0]
for i,w in enumerate(words):
if len(w)<2:
return [0,0]
if w[0]!=last:
j=i+1
if j%n==0:
answer.append(n)
else:
answer.append(j%n)
answer.append(math.ceil(j/n))
break
if w in ex:
j=i+1 #인덱스말고 순서값
if j%n==0:
answer.append(n)
else:
answer.append(j%n)
answer.append(math.ceil(j/n))
break
last=w[-1]
ex.append(w)
else:
return [0,0]
return answer
- 다른 사람 풀이
- 순서값 말고 인덱스로 했으면 범위 나눌 필요없이 return 가능
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]
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 2] [다이나믹 프로그래밍] 가장 큰 정사각형 찾기 (0) | 2022.06.20 |
|---|---|
| [프로그래머스] [Level 2] [2018 KAKAO BLIND RECRUITMENT 3차]압축 (0) | 2022.06.17 |
| [프로그래머스] [Level 2] N-Queen(백트래킹) (0) | 2022.06.11 |
| [프로그래머스] [Level 2] [2018 KAKAO BLIND RECRUITMENT 3차] 파일명 정렬 (0) | 2022.06.03 |
| [프로그래머스] [Level 2] [다이나믹 프로그래밍] 멀리 뛰기 (0) | 2022.06.01 |