티스토리 뷰

728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/12981

 

코딩테스트 연습 - 영어 끝말잇기

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

 

코드

def solution(n, words):
    answer = []
    temp = []
    temp.append(words[0])
    result1 = 0
    result2 = 0
    for i in range(1, len(words)):
        if words[i-1][-1] == words[i][0]:
            if words[i] not in temp:
                temp.append(words[i])
            else:
                result1 = i % n + 1 # 몇번째 사람이 떨어졌는지
                result2 = i // n + 1 # 떨어진 사람이 몇번째에 떨어졌는지
                return [result1, result2]
        else:
            result1 = i % n + 1 # 몇번째 사람이 떨어졌는지
            result2 = i // n + 1 # 떨어진 사람이 몇번째에 떨어졌는지
            return [result1, result2]
    else:
        return [0,0]

끝말잇기 배열이 주어졌을때 끝말잇기가 실패하는 경우가 두가지가 있다.

 

첫번째는 전단어에 맨마지막 단어와 현재 첫번째 단어가 같지 않을 경우

=> 전 단어에 맨 마지막 글자와 현재 단어에 맨 처음 글자를 비교하여 같지않을 경우 return을 시켜주도록 한다.

 

두번째는 썻던 단어를 또 쓰는 경우

=> temp 배열을 임시로 만들어 temp에 들어있지 않은 문자열을 append 시켜주고 temp에 존재하는 문자열일 경우에는 return을 시켜주도록 한다.

 

몇번째 사람이 떨어졌는지는 나머지 숫자로 구할 수 있다.

인덱스 % 사람수 + 1 을 해주면 구할 수 있다. (인덱스 이므로 +1을 해준다.)

 

떨어진 사람이 몇번째에 떨어졌는지는 몫으로 구할 수 있다.

인덱스 // 사람수 + 1 을 해주면 구할 수 있다. (인덱스 이므로 +1을 해준다.)

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30