본문 바로가기

Skill Sets/Python

[Python] 공항 방문객(프로그래머스/python/COS Pro 2급)

SMALL

안녕하세요! 데코입니다!

 

오늘은 프로그래머스 코딩테스트 COS Pro 2급 모의고사에 있는 "공항 방문객" 문제를 포스팅하려고 합니다!

 

바로 포스팅 시작할게요! :)

(출처 : https://school.programmers.co.kr/learn/courses/33/lessons/1857)

 


 

1. 문제 : 공항 방문객(COS Pro 2급)

 


 

2. 문제 설명

 

XX 공항에서 N 일 동안 매일 공항 방문객 수를 조사했습니다.
이때, 가장 많은 방문객 수와 두 번째로 많은 방문객 수의 차이를 구하려고 합니다.
단, 방문객의 수가 같은 날은 없다고 가정합니다.

이를 위해 다음과 같이 4단계로 간단히 프로그램 구조를 작성했습니다.

 


1. 입력으로 주어진 배열에서 가장 많은 방문객 수를 찾습니다.
2. 1번 단계에서 찾은 값을 제외하고, 나머지 값들로 이루어진 새로운 배열을 만듭니다.
3. 2번 단계에서 만든 새로운 배열에서 가장 큰 방문객의 수를 찾습니다.
4. 1번 단계와 3번 단계에서 구한 값의 차이를 구합니다.

 

N 일 동안의 방문객 수가 들어있는 배열 visitor가 매개변수로 주어질 때,
가장 많은 방문객 수와 두 번째로 많은 방문객 수의 차이를 return 하도록 solution 함수를 작성하려 합니다.


위 구조를 참고하여 코드가 올바르게 동작할 수 있도록

빈칸에 주어진 funca, funcb, func_c 함수를 알맞게 채워주세요.

 

[ 매개변수 설명 ]


N 일 동안의 방문객 수가 들어있는 배열 visitor가 solution 함수의 매개변수로 주어집니다.

● visitor는 N일 동안의 공항 방문객 수가 들어있는 배열입니다.
●  visitor의 길이는 1 이상 100 이하이며, 원소는 1 이상 200,000 이하의 자연수입니다.
visitor에는 같은 숫자가 중복해서 들어있지 않습니다.

 

[ Return 값 설명 ]

 

solution 함수는 가장 많은 방문객 수와 두 번째로 많은 방문객 수의 차이를 return 합니다.

 

[ 예시 ]

vistor result
[ 4, 7, 2, 9, 3 ] 2

 

예시 #1

5일 동안의 공항 방문객 수는 순서대로 [4명, 7명, 2명, 9명, 3명]입니다.

가장 많은 방문객이 방문한 날은 넷째 날로 총 9명이 방문했습니다.
두 번째로 많은 방문객이 방문한 날은 둘째 날로 총 7명이 방문했습니다.


따라서 가장 많은 방문객 수와 두 번째로 많은 방문객 수의 차이는 2입니다.

 


 

3. 문제 풀이

 

 

문제 속 빈칸을 채우는 코드를 위에서부터

빈칸 1-1, 빈칸 1-2

빈칸 2-1, 빈칸 2-2

빈칸 3-1, 빈칸 3-2

빈칸 4-1, 빈칸 4-2

이렇게 총 8개의 빈칸을 채우고 설명해 볼게요!

 

#  문제 풀이 설명

문제 설명에 있었던 함수 3개를 먼저 보았어요! (func_a(arr, n), func_b(a, b)  , func_c(arr) )

 

func_a(arr, n) 함수는 arr이라는 리스트에서 n값이 아닌 값만 새로운 리스트에 담아 만드는 함수이고,

func_b(a, b) 함수는 a와 b의 크기를 비교하여 큰 값에서 작은 값을 빼주는 함수이고,

func_c(arr)는 arr에서 가장 큰 값을 찾는 함수인 것을 알 수 있습니다.

 

그다음 solution() 함수를 보았습니다!

max_first는 가장 큰 값을 찾는 변수이기 때문에, 리스트에서 가장 큰 값을 찾아주면 되고,

solution() 함수 안에는 visitor 리스트가 존재하니까 이를 반영하면 되겠네요!

따라서 빈칸 1-1과 빈칸 1-2는 각각 c와 visitor입니다.

 

그다음 visitor_removed를 보면, 가장 큰 방문자의 수를 제거해 주는 것이기 때문에

visitor 리스트에서 이전에 만든 가장 큰 방문자를 나타내는 max_first 변수를 넣어주면 되겠네요!

따라서 빈칸 2-1과 빈칸 2-2는 각각 a와 visitor, max_first입니다.

 

그다음 max_second는 두 번째로 큰 값을 찾는 변수이기 때문에, 가장 큰 값을 제거한 리스트인

visitor_removed에서 가장 큰 값을 찾아주면 됩니다!

따라서 빈칸 3-1과 빈칸 3-2는 각각 c와 visitor_removed입니다.

 

마지막으로 answer를 보면, 가장 큰 값과 두 번째로 큰 값의 차를 구하면 되므로

max_first와 max_second 값을 빼주면 됩니다!

따라서 빈칸 4-1과 빈칸 4-2는 각각 bmax_first, max_second입니다.

 

정리하면 solution(visitor)라는 함수는,

visitor 리스트에서 가장 큰 값을 의미하는 max_first를 구하고

이후 visitor 리스트에서 max_first값을 제거한 visitor_removed에서

두 번째로 큰 값을 의미하는 max_second 값을 구하게 됩니다

이후 max_first와 max_second의 값의 차이를 구하는 answer 값을 계산하여  retrun 하게 됩니다!

 

 

 


 

4. 문제 풀이 후기

이번 문제도 만들어진 함수들이 주어지고

 

이 함수들을 이용하여 새로운 함수를 생성하는 과정에서 코드 빈칸을 채우는 문제였습니다.

 

만들어진 함수들을 활용해서, 새로운 함수를 생성하는 것이다 보니

 

만들어진 함수들을 미리 파악하는 게 중요한 거 같고, 이를 이해했는지를 확인하는 것 같네요!

 

아무래도 2급이다 보니, 난이도는 정말 쉬운 것 같습니다!

 

크게 어려운 부분이 없어서 제가 따로 코멘트할 것은 없습니다!

 



이번 포스팅은 프로그래머스에 있는

 

COS Pro 2급 python 모의고사에 있는 문제를 풀어보았습니다!

 

보통은 함수를 직접 전부 만들고 원하는 값을 retrun 하는 알고리즘 문제도 많은데

 

빈칸을 채우는 게 저도 조금 생소한 것 같아요!

 

아직은 난이도가 매우 쉬운 편이지만, COS Pro 1급과 같이 난이도가 올라가면

 

해석하는 시간도 많이 소요되지 않을까 생각합니다!

 

앞으로도 COS Pro 2급 python 관련해서도 많이 포스팅하려고 합니다! 

(너무 쉬우면 빠르게 1급 문제로 넘어가려고 생각 중입니다!)

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분

그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!

빠르게 궁금증을 해결해 드릴게요!

공감과 댓글은 큰 힘이 됩니다!

오늘도 블로그 방문해 주시고

포스팅 읽어주셔서 감사합니다!

 

 

 

LIST