티스토리 뷰

1. 문제

programmers.co.kr/learn/courses/30/lessons/42576

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

2. 소스코드 (Python3)

def solution(participant, completion):

    hash = {}

   

    for p in participant:

        hash[p] = hash.get(p, 0) + 1

    for c in completion:

        hash[c] -= 1

   

    ans = [k for k, v in hash.items() if v > 0]

 

    return ans[0]

 

3. 고찰

1) dictionary 자료구조

(1) 생성

Dict = {}

또는

Dict = dict(a=1, b=2, c=3)

(2) key값을 이용해 value찾기

Dict[key] : 이미 존재하는 key에 대한 value값 얻는 방법.

Dict.get(key, default) : 딕셔너리에 key가 있으면 해당 key에 대한 value를 반환하고, key가 없으면 default에 지정한 값을 반환하는 함수.

(3) 새로운 key 추가하기 or 기존 key의 value값 변경하기

Dict[key] = value

(4) 딕셔너리의 모든 key와 value를 튜플로 묶어서 반환하기

Dict.items()

(5) 특정 key값 삭제

del Dict[key]

 

2) 시간복잡도

participant의 모든 원소에 대해서 for loop -> O(N)

completion의 모든 원소에 대해서 for loop -> O(N)

딕셔너리의 items()함수: 딕셔너리의 모든 원소에 접근 -> O(N)

따라서 위 코드의 시간복잡도는 O(N + N + N) => O(N) 이다.

 

'프로그래밍 > Python' 카테고리의 다른 글

프로그래머스 - 가장 큰 수  (0) 2020.12.03
프로그래머스 - 체육복  (0) 2020.12.03
프로그래머스_문자열 압축  (0) 2020.11.04
프로그래머스_H-Index  (0) 2020.11.03
Quick Sort 파이썬 구현  (0) 2020.11.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함