[프로그래머스] Summer/Winter Coding(~2018) - 영어 끝말잇기 / python

2020. 11. 9. 13:29· 알고리즘/문제풀이
목차
  1. 문제 설명
  2. 제한 사항
  3. 입출력 예
  4. 나의 풀이
  5. 느낀 점
728x90

문제 설명

1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.

  1. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.
  2. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.
  3. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.
  4. 이전에 등장했던 단어는 사용할 수 없습니다.
  5. 한 글자인 단어는 인정되지 않습니다.

다음은 3명이 끝말잇기를 하는 상황을 나타냅니다.

tank → kick → know → wheel → land → dream → mother → robot → tank

위 끝말잇기는 다음과 같이 진행됩니다.

  • 1번 사람이 자신의 첫 번째 차례에 tank를 말합니다.
  • 2번 사람이 자신의 첫 번째 차례에 kick을 말합니다.
  • 3번 사람이 자신의 첫 번째 차례에 know를 말합니다.
  • 1번 사람이 자신의 두 번째 차례에 wheel을 말합니다.
  • (계속 진행)

끝말잇기를 계속 진행해 나가다 보면, 3번 사람이 자신의 세 번째 차례에 말한 tank 라는 단어는 이전에 등장했던 단어이므로 탈락하게 됩니다.

사람의 수 n과 사람들이 순서대로 말한 단어 words 가 매개변수로 주어질 때, 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는지를 구해서 return 하도록 solution 함수를 완성해주세요.

제한 사항

  • 끝말잇기에 참여하는 사람의 수 n은 2 이상 10 이하의 자연수입니다.
  • words는 끝말잇기에 사용한 단어들이 순서대로 들어있는 배열이며, 길이는 n 이상 100 이하입니다.
  • 단어의 길이는 2 이상 50 이하입니다.
  • 모든 단어는 알파벳 소문자로만 이루어져 있습니다.
  • 끝말잇기에 사용되는 단어의 뜻(의미)은 신경 쓰지 않으셔도 됩니다.
  • 정답은 [ 번호, 차례 ] 형태로 return 해주세요.
  • 만약 주어진 단어들로 탈락자가 생기지 않는다면, [0, 0]을 return 해주세요.

입출력 예

n words result
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]
2 [hello, one, even, never, now, world, draw] [1,3]

 

나의 풀이

 

def solution(n, words):
    test = [words[0]]
    for i in range(1, len(words)):
        if words[i-1][-1] != words[i][0] or words[i] in test:
            who = (i % n) + 1
            when = (i // n) + 1
            return [who, when]
        
        test.append(words[i])
        
    return [0, 0]

 

코드 작성 이전에 구해야 할 것들을 미리 작성하면서 접근하였다. 먼저 차례를 구할 방법과, 끝말잇기 탈락자가 누구인지, 그리고 끝말잇기가 끝나는 경우의 수를 머리속에서 먼저 생각했다.

 

차례는 모든 사람이 한 번씩 단어를 말한 이후에 +1이 되므로, 해당 단어의 인덱스를 모든 사람의 수로 나눈 몫을 통해 구할 수 있었고, 탈락자 또한, 인덱스를 모든 사람의 수로 나눈 후의 나머지 값을 통해 구할 수 있었다.

 

끝말잇기가 끝나는 경우는

1. words[n]의 맨 뒤 알파벳과 words[n+1]의 맨 첫 알파벳이 같지 않을때

2. 이미 말해진 단어를 test라는 리스트에 하나씩 담고, for문이 돌면서 새로 추가되는 단어들이 test 리스트에 있는지 검사(없다면 append)하는 방식으로 판단하였다.

  

느낀 점

요즘은 전공공부하다가 머리 아프거나 하기 싫어지면 코테 문제를 푼다. 단순히 외우다가 현타오는 전공공부랑은 다르게 스스로 생각하고 집중할 수 있는 그 순간이 좋고, 문제 풀던 못풀던 한 문제를 거쳐가면 항상 배우는 게 생기는 것 같다. 

 

'알고리즘 > 문제풀이' 카테고리의 다른 글

[프로그래머스] 최솟값 만들기 - Python  (0) 2020.12.06
[프로그래머스] Summer/Winter Coding(~2018) - 점프와 순간 이동 / python  (0) 2020.11.09
[프로그래머스] Summer/Winter Coding(~2018) - 예산 / python  (0) 2020.11.09
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT - 실패율 / python  (0) 2020.11.09
[프로그래머스] 월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기 / python  (2) 2020.11.09
  1. 문제 설명
  2. 제한 사항
  3. 입출력 예
  4. 나의 풀이
  5. 느낀 점
'알고리즘/문제풀이' 카테고리의 다른 글
  • [프로그래머스] 최솟값 만들기 - Python
  • [프로그래머스] Summer/Winter Coding(~2018) - 점프와 순간 이동 / python
  • [프로그래머스] Summer/Winter Coding(~2018) - 예산 / python
  • [프로그래머스] 2019 KAKAO BLIND RECRUITMENT - 실패율 / python
SeongOnion
SeongOnion
서버는 꺼지지 않아요
SeongOnion
조무래기 코딩
SeongOnion
전체
오늘
어제
  • 분류 전체보기 (166)
    • 알고리즘 (81)
      • 이론 (8)
      • 문제풀이 (73)
    • 언어 (15)
      • Python (9)
      • JavaScript (1)
      • JAVA (5)
    • 데이터베이스 (5)
    • 프레임워크 (15)
      • Django (7)
      • Spring (8)
    • 그 외 공부 (37)
      • 운영체제 (1)
      • 자료구조 (14)
      • 네트워크 (5)
      • CS (2)
      • 기타 (6)
      • 트러블 슈팅 (9)
    • 프로젝트 (0)
    • 개발자취 (8)
    • 회고 (3)
    • 주저리주저리 (1)
    • 기타 (비개발) (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 이진탐색
  • 투 포인터 알고리즘
  • 웹
  • Django
  • 소수
  • 오픈소스
  • BFS
  • DP
  • 에라토스테네스의 체
  • 정렬 알고리즘
  • 컨트리뷰트
  • 장고
  • 백준
  • 코딩
  • 프로그래머스
  • BFS/DFS
  • 자바
  • 코딩테스트
  • 스택
  • 브루트포스
  • 알고리즘
  • 개발자
  • 트러블 슈팅
  • 회고
  • 그리디알고리즘
  • 큐
  • 데이터베이스
  • 파이썬
  • DRF
  • spring

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
SeongOnion
[프로그래머스] Summer/Winter Coding(~2018) - 영어 끝말잇기 / python
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.