데이터사이언스 기록기📚

[프로그래머스] Level 2_영어 끝말잇기(Summer/Winter Coding(~2018)) 본문

Coding Test/프로그래머스(Python)

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

syunze 2022. 10. 6. 22:13

📌문제 유형

Summer/Winter Coding(~2018)

 

📌문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📌나의 문제풀이

1차 시도(80.0)

 - answer에 대한 처리를 잘못함

def solution(n, words):
    answer = []
    order = 0
    
    # 탈락 조건
    for i in range(1, len(words)):
        # 한 글자 단어일때
        if len(words[i]) == 1:
            order = i + 1
            break
        else:
            # 마지막 문자로 시작하지 않을 때
            if words[i-1][-1] != words[i][0]:
                order = i + 1
                break
            # 이전에 등장한 단어 있을 때
            elif words[i] in words[:i]:
                order = i + 1
                break
                
    if 0 < order <= len(words):
        if order % n == 0:
            answer.append(order//n)
            answer.append(order//n)
        else:
            answer.append(order % n)
            answer.append((order//n) +1)
    else:
        return [0,0]

    return answer
2차 시도(통과)

 - if문에 모든 조건을 or로 연결하여 값 리턴

 - for else문: for문이 중간에 break 등으로 끊기지 않고, 끝까지 수행 되었을 때 수행하는 코드를 담고 있다.

 

[Python] 파이썬 for-else 문

안녕하세요. 파이썬에 있는 편리한 문법인 for-else 문에 대한 포스팅 입니다. 보통 프로그래밍 언어에서 'else'라고 하면 if와 함께 오는 경우가 거의 대부분입니다. 하지만 파이썬에서는 for 문과도

harryp.tistory.com

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

 

📌다른 사람들의 풀이

1) 1차 시도와 비슷한 풀이

def solution(n, words):
    answer = []
    turn = 0
    wordList = [words[0]]
    # [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    for idx in range(1, len(words)):
        if words[idx-1][-1] != words[idx][0]:
            turn = idx
            break
        if words[idx] in wordList:
            turn = idx
            break
        wordList.append(words[idx])
    answer = [turn%n +1, turn//n + 1]
    if turn == 0:
        answer = [0, 0]
    return answer

 

📌리뷰

- for-else문으로 break없이 for문 이외의 답을 지정할 수 있다.

728x90
Comments