프로그래머스 | 완주하지 못한 선수 [파이썬 python]

2023. 4. 25. 14:50·Algorithm/프로그래머스
 

프로그래머스

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

programmers.co.kr

 

처음 시도한 코드

def solution(participant, completion):
    for i in completion:
        if i in participant:
            participant.remove(i)
    return ''.join(participant)

어렵지 않은 문제이기 때문에 쉽게 코드를 작성할 수 있었다.

하지만 정확성 테스트는 모두 통과하지만 효율성 테스트는 시간 초과로 실패하였다.

내가 작성한 코드에서 시간을 많이 소요되는 부분을 생각해 보니 for문과 remove임을 알 수 있었다.

completion이 길어지면 길어질수록 for문의 시간도 증가하고, participant가 길어질수록 remove에도 시간이 오래 걸린다.

 

정답 코드

from collections import Counter

def solution(participant, completion):
    p = Counter(participant)
    c = Counter(completion)
    fail = list(p-c)
    return fail[0]

그래서 요소 하나를 두 리스트에 공통으로 존재하는지 비교하는 것보단 Counter를 사용하는 방식을 택하였다.

Counter를 사용하여 participant, completion의 모든 요소들의 개수를 센 뒤, 차를 구하면 해당 값이 완주하지 못한 선수가 된다.

Counter끼리 마이너스(-) 연산이 가능하기 때문에 쉽게 완주하지 못한 선수를 찾을 수 있다.

p-c, list(p-c)

p-c를 list로 만들어주면 위 사진처럼 ['leo']가 된다. 딕셔너리를 list로 만들어주면 key값들로만 이루어지기 때문에 구하고자 하는 선수의 이름만 쉽게 리스트로 만들 수 있다.

 

문제에서 단 한 명만 제외하고 모든 선수가 완주를 했다고 알려주었으므로, 완주하지 못한 선수는 단 한 명이다.

따라서 0번째 요소만 리턴해주면 된다.

저작자표시 (새창열림)
'Algorithm/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | 2022 KAKAO TECH INTERNSHIP | 성격 유형 검사 [파이썬 python]
  • 프로그래머스 | 달리기 경주 [파이썬 python]
  • 프로그래머스 | 숫자 짝꿍 [파이썬 python]
  • 프로그래머스 | 기사단원의 무기 [파이썬 python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (46)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
프로그래머스 | 완주하지 못한 선수 [파이썬 python]
상단으로

티스토리툴바