본문 바로가기
*Algorithm/Programmers_Level1

[programmers] 프로그래머스 Level1 완주하지 못한 선수(파이썬 Python)

by codinguser 2020. 8. 31.

프로그래머스
(주)그렙

[programmers] 프로그래머스 Level1 완주하지 못한 선수

(파이썬 Python)

 

* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
* 소스 코드 및 정리한 내용의 저작권은 글쓴이에게 있습니다.

 

 

 

 

프로그래머스 Level1 완주하지 못한 선수


1) 문제

 

프로그래머스 완주하지 못한 선수

 

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

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

programmers.co.kr


2) 풀이 과정

 

1. 배열participant와 배열completion에 들어 있는 문자열의 내용이 겹치는 경우가 있기에, 일단 2개다 정렬을 해주면 좋을것 같다라는 생각

 

case1)

p = ["e", "k", "l"]

c = ["e", "k"]

 

case2)

p = ["f", "j","m", "n", "v"]

c = ["f", "j","m", "n"]

 

case3)

p = ["a", "m", "m", "s"]

c = ["a", "m", "s"]

 

2. 완주하지 못한 선수는 participant와 completion 중에서 당연히 completion을 기준으로 participant를 비교했을때, completion에 없는 이름을 participant에서 뽑아내면 됨

 

3. 문제에서 주어진 기준만 명확히 잡아야함 3개의 케이스 공통점과 차이점을 확인

 

공통점)

1. case1과 case2 p의 마지막에 문자를 반환 하게 되는 경우

2. case1,case2,case3 모두 p와c의 문자가 같을 때의 i를 기준으로 p[i+1]의 값이 출력

 

차이점)

1. case1,2는 p의 맨 마지막의 값이 반환이 되는데 case3의 경우 맨 마지막의 값이 반환이 아님

 

즉 case3으로 인해서

if(participant[i] != completion[i]):

    return participant[i] 를 쓰게 됨

 

case1,case2,case3의 공통점을 경우로 삼아

return participant[i+1]을 해줌


3) 코드

 

1
2
3
4
5
6
7
8
9
10
def solution(participant, completion):
    
    participant.sort()
    completion.sort()
    
    for i in range(len(completion)):
        if(participant[i] != completion[i]):
            return participant[i]
           
    return participant[i+1]
cs

4) 정리 노트

 

변수.sort() #오름차순

변수.sort(reverse=True) # 내림차순


 

댓글