[파이썬] 프로그래머스 : 영어 끝말잇기 (Lv.2)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
0. 방향성 생각
사용할 수 있는 단어를 table 딕셔너리로 저장.
k : kick, know 등
1. table 채우기
def solution(n, words):
table = {}
for word in words:
if word[0] not in table : table[word[0]] = {word}
else : table[word[0]].add(word)
연산 빨라야하니까 집합으로 저장
1. table 채우기
answer = []
match,player = 1,1
memory = words[0][0]
for word in words:
if word[0] != memory or word not in table[word[0]] or len(word)== 1:
answer = [player,match] # 끝
return answer
else :
table[word[0]].remove(word) # 사용한 단어 제거하고
player += 1 # 다음 플레이어
memory = word[-1] # 다음 시작단어 교체
if player%n == 1:
player = 1
match += 1
if not answer:
return [0,0]
처음 단어 들어오면 시작해야하니까 메모리는 words[0][0]으로.
단어를 말하고 memory를 말한 단어의 마지막 단어로 업데이트한다.
메모리랑 시작 단어가 같고, 단어가 table[word[0]]에 있고 (사용하지 않았고), 길이가 1이 아니면
다음 플레이어로 교체, 메모리도 업데이트.
순번은 잘 n배수마다 업데이트한다.
전체코드
def solution(n, words):
table = {}
for word in words:
if word[0] not in table : table[word[0]] = {word}
else : table[word[0]].add(word)
answer = []
match,player = 1,1
memory = words[0][0]
for word in words:
if word[0] != memory or word not in table[word[0]] or len(word)== 1:
answer = [player,match] # 끝
return answer
else :
table[word[0]].remove(word) # 사용한 단어 제거하고
player += 1 # 다음 플레이어
memory = word[-1] # 다음 시작단어 교체
if player%n == 1:
player = 1
match += 1
if not answer:
return [0,0]
'Algorithm > etc' 카테고리의 다른 글
[파이썬] 백준 14500 : 테트로미노 (골드4) (0) | 2023.08.05 |
---|---|
[파이썬] 백준 2539 : 모자이크 (골드3) (0) | 2023.08.04 |
[파이썬] 프로그래머스 : 후보키 (Lv.2) (0) | 2023.08.01 |
[파이썬] 프로그래머스 : 124나라의 숫자 (Lv.2) (0) | 2023.07.25 |
[파이썬] 프로그래머스 : 호텔 대실 (Lv.2) (0) | 2023.07.25 |
[파이썬] 백준 28257: 알록달록 초콜릿 만들기 (골드3) (0) | 2023.07.20 |
[파이썬] 프로그래머스 : 순위 검색 (Lv.2) (0) | 2023.07.17 |
댓글