Posts 공항방문객 [CosProLv2]
Post
Cancel

공항방문객 [CosProLv2]

URL https://programmers.co.kr/learn/courses/33/lessons/1857

문제 설명

  • 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 합니다.

빈칸 코드

  • 빈칸 채우기 문제 안내
    • 빈칸 채우기는 이미 완성된 코드 중 빈칸에 알맞은 코드를 입력하는 문제 타입입니다.
    • 빈칸을 제외한 기본 코드는 수정할 수 없습니다.
    • 빈칸을 채우지 않을 경우, 실행 결과에 에러 메시지가 표시됩니다.
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
This post is licensed under CC BY 4.0 by the author.