Q>
자연수가 들어있는 리스트가 있습니다.
이 리스트에서 가장 많이 등장하는 숫자의 개수는 갖아 적게 등장하는 숫자 개수의 몇 배인지 구하려 합니다.
이를 위해 다음과 같이 간단히 프로그램 구조를 작성했습니다.
1단계, 리스트에 들어있는 각 자연수의 개수를 셉니다.
2단계, 가장 많이 등장ㅇ하는 수의 개수를 구합니다.
3단계, 가장 적게 등장하는 수의 개수를 구합니다.
4단계, 가장 많이 등장하는 수가 가장 적게 등장하는 수보다 몇 배 더 많은지 구합니다.
단, 몇 배 더 많은지 구할 때는 소수 부분은 버리고 정수 부분만 구하면 됩니다.
자연수가 들어있는 리스트 arr가 매개변수로 주어질 때, 가장 많이 등장하는 숫자가 가장 적게 등장하는 숫자보다
몇 배 더 많은지 return 하도록 solution 함수를 작성하려 합니다.
위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 funca, funcb, func_c 함수와 매개변수를
알맞게 채워주세요.
- 매개변수 설명
자연수가 들어있는 리스트 arr가 solution 함수의 매개변수로 주어집니다.
* arr의 길이는 3 이상 1,000 이하입니다.
* arr에는 1 이상 1,000 이하의 자연수가 들어있습니다.
- return 값 설명
리스트에서 가장 많이 등장하는 숫자가 가장 적게 등장하는 숫자보다 몇 배 이상 많은지 return 해주세요.
* 가장 많이 들어있는 수의 개수와 가장 적게 들어있는 수의 개수가 같은 경우에는 1을 return 합니다.
- 예시
arr | return |
[1, 2, 3, 3, 1, 3, 3, 2, 3, 2] | 2 |
- 예시 설명
리스트에 1이 2개, 2가 3개, 3이 5개 들어있습니다.
* 가장 적게 들어있는 숫자 : 1 (2개)
* 가장 많이 들어있는 숫자 : 3 (5개)
3이 1보다 2.5배 많이 들어있으며, 소수 부분을 버리고 2를 return 하면 됩니다.
A>
def func_a(arr):
counter = [0 for _ in range(1001)]
for x in arr:
counter[x] += 1
return counter
def func_b(arr):
ret = 0
for x in arr:
if ret < x:
ret = x
return ret
def func_c(arr):
INF = 1001
ret = INF
for x in arr:
if x != 0 and ret > x:
ret = x
return ret
def solution(arr):
counter = func_a(arr)
max_cnt = func_b(counter)
min_cnt = func_c(counter)
return max_cnt // min_cnt
arr = [1, 2, 3, 3, 1, 3, 3, 2, 3, 2]
ret = solution(arr)
print(ret)
F>
#>
'Python_Matter > COS Pro' 카테고리의 다른 글
YBM Python Test Level 2 - 369 게임 (0) | 2019.10.14 |
---|---|
YBM Python Test Level 2 - 주어진 리스트의 순서 뒤집기 (0) | 2019.10.14 |
YBM Python Test Level 2 - D-Day 계산 (0) | 2019.10.11 |
YBM Python Test Level 2 - 회원 등급 할인 서비스 (0) | 2019.10.11 |
YBM Python Test Level 2 - 티셔츠별로 세기 (0) | 2019.10.11 |