코딩테스트/Programmers

완주하지 못한 선수 (Python)

동띵 2023. 7. 25. 20:50

https://school.programmers.co.kr/learn/courses/30/lessons/42576

 

프로그래머스

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

programmers.co.kr

def solution(participant, completion):
    players = dict.fromkeys(participant, 0)
    
    for player in participant:
            players[player] += 1
            
    for player in completion:
        if player in players:
            players[player] -= 1
            
    return sorted(players.items(), key=lambda x: x[1], reverse=True)[0][0]
  • 사용자 이름과 등장 횟수를 세기 위해 dict.fromkeys 사용하여 key가 사용자 이름이고 value 초깃값이 0인 딕셔너리 선언
  • 참여 선수 이름의 배열을 돌며 해당 선수 이름이 dict에 있으면 value 값 1 증가
  • 완주한 선수 이름 배열을 돌며 해당 선수 이름이 dict에 있으면 value 값 1 감소
  • items()를 사용해 딕셔너리의 값을 추출하고, value 값을 기준으로 내림차순 정렬
    • 그럼 완주하지 못한 선수의 value 값이 1이므로 가장 앞으로 가기 때문에 0번째 인덱스에 접근
    • (선수 이름, 등장 횟수) 형태이기 때문에 이름만 return 하기 위해 0번째 인덱스에 접근하여 return

'코딩테스트 > Programmers' 카테고리의 다른 글

[1차] 캐시 (JS)  (0) 2023.12.13
N으로 표현 (Python)  (0) 2023.09.24
A로 B 만들기 (Python)  (0) 2023.07.21
숨어있는 숫자의 덧셈 (2) (Python)  (0) 2023.07.17
튜플 (Python)  (0) 2023.06.01