URL https://programmers.co.kr/learn/courses/33/lessons/1857
문제 설명
- XX 공항에서 N 일 동안 매일 공항 방문객 수를 조사했습니다. 이때, 가장 많은 방문객 수와 두 번째로 많은 방문객 수의 차이를 구하려고 합니다. 단, 방문객의 수가 같은 날은 없다고 가정합니다. 이를 위해 다음과 같이 4단계로 간단히 프로그램 구조를 작성했습니다.
- 입력으로 주어진 배열에서 가장 많은 방문객 수를 찾습니다.
- 1번 단계에서 찾은 값을 제외하고, 나머지 값들로 이루어진 새로운 배열을 만듭니다.
- 2번 단계에서 만든 새로운 배열에서 가장 큰 방문객의 수를 찾습니다.
- 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 합니다.
빈칸 코드
- 빈칸 채우기 문제 안내
- 빈칸 채우기는 이미 완성된 코드 중 빈칸에 알맞은 코드를 입력하는 문제 타입입니다.
- 빈칸을 제외한 기본 코드는 수정할 수 없습니다.
- 빈칸을 채우지 않을 경우, 실행 결과에 에러 메시지가 표시됩니다.
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
def func_a(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):
ret = -1
for x in arr:
if ret < x:
ret = x
return ret
def solution(visitor):
max_first = func_'빈칸'('빈칸')
visitor_removed = func_'빈칸'('빈칸')
max_second = func_'빈칸'('빈칸')
answer = func_'빈칸'('빈칸')
return answer
문제 풀이
- func_a : n을 제외한 모든값을 다시 더하는 함수
- func_b : a, b를 빼는 함수
- func_c : max 값을 찾는 함수
- 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를 넣습니다.
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
def func_a(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):
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_a(visitor_removed)
answer = func_b(max_first, max_second)
return answer