본문 바로가기
프로그래머스/Python

[프로그래머스] 완주하지 못한 선수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 9. 19.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 참여자 명단에서 완주한 사람을 제거하고 남은 한 명의 이름을 구하는 문제이다.

처음에 참여자 명단에서 완주한 사람을 제거하는 방식으로 해결해보려고 했지만 유효성 검사에서 시간초과가 발생했다.

하여 문제의 분류처럼 해시를 이용하여 해결할 수 있는 방법을 생각했고 딕셔너리를 활용하였다.

 

  1. 참여자 명단을 저장할 딕셔너리를 생성한다. d = {}
  2. 참여자 명단을 한 명씩 불러오며 for i in participant
  3. 만약 동명이인이면 사람 수를 증가시킨다. if (i in d): d[i] += 1
  4. 반면에 처음 나온 사람이면 딕셔너리에 추가한다. else: d[i] = 1
  5. 완주자 명단을 한 명씩 불러오며 for i in completion
  6. 해당 사람의 수를 감소시키고 d[i] -= 1
  7. 만약 해당 사람이 모두 완주했다면 해당 사람을 딕셔너리에서 제거한다. if (d[i] == 0): del d[i]
  8. 남은 한 명의 완주하지 못한 사람의 이름을 저장한다. for i in d.keys(): answer = i
반응형

3. 소스코드

def solution(participant, completion):
    answer = ''
    
    d = {}
    for i in participant:
        if (i in d):
            d[i] += 1
        else:
            d[i] = 1
            
    for i in completion:
        d[i] -= 1
        if (d[i] == 0):
            del d[i]
            
    for i in d.keys():
        answer = i
        
    return answer
728x90
반응형