문제
https://school.programmers.co.kr/learn/courses/30/lessons/12981
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
문제는 끝말잇기를 지는 사람이 누구인지 그리고 몇번째 차례에서 패배했는지를 출력하는 문제였다. 끝말잇기의 패배 조건은 다음과 같다.
1. 이전에 나온 단어를 뱉으면 게임에서 진다.
2. 직전에 나온 단어의 마지막 스펠링과 현재 뱉는 단어의 시작하는 스펠링이 다르면 게임에서 진다.
나는 여기서 1번 조건에 집중을 해서 set을 생각했다. 프로세스는 다음과 같다.
1. 단어를 순서대로 받아온다
2-1. 받아온 단어가 set에 없고 2번 조건에 위배되지 않는다면 set에 넣는다.
2-2. 2-1의 조건이 충족하지 않으면 게임에서 진것으로 간주하고 현재 순서와 단어를 반환한다
3. 단어를 전부 받아왔음에도 불구하고 게임이 끝나지 않으면 (0,0)을 출력한다.
추가
math라이브러리의 ceil, floor 그리고 내장 함수인 round의 사용법에 대해서 알게 되었다.
코드
import math
def solution(n, words):
diction = dict([])
count = []
for idx, word in enumerate(words):
if idx == 0 :
diction[idx] = word
continue
if (word not in diction.values()) and (word[0] == diction.get(idx-1)[-1]):
diction[idx] = word
else:
print(idx, word)
return [idx%n +1, math.ceil((idx+1)/n)]
return [0,0]
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 구명보트 (파이썬) (0) | 2023.03.31 |
---|---|
[프로그래머스] 카펫 (파이썬) (0) | 2023.03.31 |
[프로그래머스] 짝지어 제거하기 (파이썬) (0) | 2023.03.31 |
[프로그래머스] 피보나치 수 (파이썬) (0) | 2023.03.30 |
[프로그래머스] 다음 큰 숫자 (파이썬) (0) | 2023.03.30 |