https://school.programmers.co.kr/learn/courses/30/lessons/12981
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해시를 사용한 간단한 시뮬레이션 문제입니다. 우리가 체크해야하는 조건은 3가지 입니다.
1. 앞 사람이 말한 단어의 마지막 글자로 시작해야합니다.
2. 앞에서 나오지 않은 단어여야 합니다.
3. 끝말잇기가 진행된 차례 수와, 말한 참가자의 번호를 알아야 합니다.
1번 조건은 제일 첫 참가자를 제외하고 이전에 나온 단어의 마지막 글자를 저장하고 비교하여 구현할 수 있습니다.
2번 조건은 단어가 나올때 마다 이를 set, map 등 문자열을 key로 접근할 수 있는 해시 자료구조에 넣어 구현할 수 있습니다.
3번 조건은 어차피 단어를 입력된 순서대로 봐야하므로 Iterator나 forEach 구문 대신 idx를 사용해 단어에 접근하고, 참가자 번호는 n으로 나머지연산을 취해 n개의 값을 돌도록 구현했습니다.
def solution(n, words):
answer = [0, 0]
b = words[0][-1]
idx = 1
who = 1
duple = {}
duple[words[0]] = 1
while idx < len(words):
if words[idx] in duple or words[idx][0] != b:
answer = [who + 1, (idx // n) + 1]
break
else:
b = words[idx][-1]
duple[words[idx]] = 1
who = (who + 1) % n
idx += 1
return answer
728x90
'🔍 알고리즘 > 프로그래머스 Python' 카테고리의 다른 글
[Python] 프로그래머스 12911. 다음 큰 숫자 (Lv.2) (0) | 2023.11.20 |
---|---|
[Python] 프로그래머스 42842. 카펫 (Lv.2) (1) | 2023.11.20 |
[Python] 프로그래머스 12973. 짝지어 제거하기 (Lv.1) (0) | 2023.06.21 |
[Python] 프로그래머스 160586. 대충 만든 자판 (Lv.1) (0) | 2023.06.20 |
[Python] 프로그래머스 159994. 카드뭉치 (Lv.1) (0) | 2023.06.20 |