Q>
문제 설명
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 합니다.
- 예시
visitor | result |
[4,7,2,9,3] | 2 |
- 예시 설명
예시 #1
5일 동안의 공항 방문객 수는 순서대로 [4명, 7명, 2명, 9명, 3명]입니다.
가장 많은 방문객이 방문한 날은 넷째 날로 총 9명이 방문했습니다.
두 번째로 많은 방문객이 방문한 날은 둘째 날로 총 7명이 방문했습니다.
따라서 가장 많은 방문객 수와 두 번째로 많은 방문객 수의 차이는 2입니다.
A>
def func_a(arr, n): # arr에서 n 값이 같은 요소를 제거한 새로운 리스트를 생성
ret = []
for x in arr:
if x != n:
ret.append(x)
return ret
def func_b(a, b): # 두 정수를 매개변수로 받아 두 수의 차이를 구해 반환
if a >= b:
return a- b
else:
return b - a
def func_c(arr): # arr에 들어있는 모든 요소를 순서대로 검사하면서 발견한 가장 큰 수인 ret보다 x가 크다면 ret를 변경
ret = -1
for x in arr:
if ret < x:
ret = x
return ret
def solution(visitor):
max_first = func_c(visitor) # 가장 많은 방문객 수 찾기
visitor_removed = func_a(visitor, max_first) # 가장 많은 방문객 수에서 찾은 값을 제외하고 나머지 값들로 새로운 리스트 생성
max_second = func_c(visitor_removed) # 새로운 리스트에서 가장 많은 방문객 수 찾기
answer = func_b(max_first, max_second) # 위에서 구한 값의 차이 구하기
return answer
print(solution([4, 7, 2, 9, 3]))
F>
#>
'Python_Matter > COS Pro' 카테고리의 다른 글
YBM Python Test Level 2 - 개구리 (0) | 2019.10.19 |
---|---|
YBM Python Test Level 2 - 학점 계산 (0) | 2019.10.19 |
YBM Python Test Level 2 - n부터 m까지 자연수의 합 (0) | 2019.10.19 |
YBM Python Test Level 2 - 총점 (0) | 2019.10.19 |
YBM Python Test Level 2 - 거스름돈 계산 (0) | 2019.10.19 |