[프로그래머스] 완주하지 못한 선수 Python (Level 1)

2020. 8. 27. 21:48·Programmers
반응형

TITLE

문제주소 : https://programmers.co.kr/learn/courses/30/lessons/42576

 

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

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

programmers.co.kr

 


<문제 설명>

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

마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

 

<풀이법>

직관적으로 문제를 보면, 참여자 배열과 완주자 배열을 직접 비교해보면 됩니다. 나머지는 다 똑같고 단 한명만 차이가 있는 것이므로, 가장 단순한 방법은 이중 반복문을 사용하여 비교하는 방식입니다.하지만 이중 반복문을 사용할 경우 시간복잡도가 O(N^2)으로, 시간 복잡도를 더 줄일 수 있는 방법을 찾아보았습니.

 

그래서 찾아낸 방법이, 두 배열을 모두 정렬하고 인덱스에 맞춰서 비교하는 것입니다. 두 배열은 단 하나의 원소 말고는 전부 동일한 원소를 가지기 때문에 정렬된 상태에서 각 인덱스별로 비교를 하다가 동일하지 않은 원소가 나타난다면, 해당 참가자는 완주하지 못한 사람이 될 수 밖에 없습니다. 시간복잡도를 계산해보면, 각 배열 정렬에 걸리는 시간 O(NlogN) 이 각 배열에 적용되고, 이 둘을 비교하는 시간 O(N)이 적용되므로, 총 시간복잡도는 O(NlogN)으로 기존의 이중 반복문을 사용한 경우보다 좋은 결과가 나오게 됩니다.

 

<코드(Python)>

def solution(participant, completion):
    answer = ''
    participant.sort()
    completion.sort()
    for i in range(len(participant)):
        if i == len(participant)-1 or participant[i] != completion[i] :
            answer = participant[i]
            break;
    return answer

 

더 많은 코드 보기(GitHub) : github.com/dwkim-97/CodingTest

 

반응형

'Programmers' 카테고리의 다른 글

[프로그래머스] 스킬트리 / Python  (0) 2020.12.29
[프로그래머스] 두 개 뽑아서 더하기 / Python  (0) 2020.12.29
[프로그래머스] 가장 큰 수 Python (level 2)  (2) 2020.12.27
[프로그래머스] 위장 Python (Level 2)  (0) 2020.12.24
[프로그래머스] 전화번호 목록 Python (Level 2)  (0) 2020.12.24
'Programmers' 카테고리의 다른 글
  • [프로그래머스] 두 개 뽑아서 더하기 / Python
  • [프로그래머스] 가장 큰 수 Python (level 2)
  • [프로그래머스] 위장 Python (Level 2)
  • [프로그래머스] 전화번호 목록 Python (Level 2)
개발하는 사막여우
개발하는 사막여우
개발개발 주저리주저리
    반응형
  • 개발하는 사막여우
    개발하는 사막여우
    개발하는 사막여우
  • 전체
    오늘
    어제
    • All (311)
      • Books (13)
        • 읽기 좋은 코드가 좋은 코드다 (13)
      • Study (6)
        • Blockchain (3)
        • Algorithm (3)
      • Baekjoon (36)
      • Programmers (166)
      • LeetCode (15)
      • Open Source (1)
        • Youtube Popout Player (1)
      • Language (32)
        • Python (9)
        • JS (8)
        • Java (5)
        • HTML (6)
        • CSS (4)
      • Library & Framework (15)
        • React.js (15)
      • IDE (2)
        • IntelliJ (2)
      • Airdrop (9)
      • Tistory (2)
      • etc.. (7)
        • Cozubi (6)
        • lol-chess (0)
  • 블로그 메뉴

    • Github
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    프로그래머스 위클리 챌린지
    코주비
    코딩테스트연습
    Python
    코인줍줍
    신규 코인 에어드랍
    Cozubi
    2018 KAKAO BLIND RECRUITMENT
    읽기 좋은 코드가 좋은 코드다
    클린 코드
    백준
    파이썬
    Java
    프로그래머스
    programmers
    알고리즘문제풀이
    클린 코드 작성법
    카카오 코딩테스트
    카카오 알고리즘 문제
    카카오 공채
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
개발하는 사막여우
[프로그래머스] 완주하지 못한 선수 Python (Level 1)
상단으로

티스토리툴바