# 문제1 중복된 숫자 개수
# 정수가 담긴 배열 array 와 정수 n 이 매개변수로 주어질 때,
# array 에 n 이 몇 개 있는 지를 return 하도록 solution 함수를 완성하라
# 단 1<= array의 길이 <= 100
# 0<= n <= 1000
'''
def solution(array, n):
cnt = array.count(n)
print('배열 array 의 n 등장 횟수', cnt)
return cnt
import random
array = random.choices(range(1, 20), k=10)
print('array를 랜덤으로 만듭니다.', array)
n = random.randint(1, 20)
print('n을 랜덤으로 할당합니다.', n)
print( solution(array, n))
'''
# print 결과는
# array를 랜덤으로 만듭니다. [3, 17, 3, 1, 4, 5, 11, 14, 14, 11]
# n을 랜덤으로 할당합니다. 14
# 배열 array 의 n 등장 횟수 2
# 문제2 배열의 평균값
# 정수 배열 numbers 가 매개변수로 주어진다.
# numbers의 원소의 평균값을 return 하도록 solution 함수를 완성하라
# 단, 0<= numbers 의 원소 <= 1000
# 1<= numbers의 길이 <= 100
# 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어진다.
'''
def solution(numbers):
average = sum(numbers) / len(numbers)
return average
import random
numbers = random.choices(range(1, 5), k=5)
print(numbers)
print(solution(numbers))
'''
# print의 결과는
# [4, 4, 2, 2, 1]
# 2.6
# 잘 됩니다!
# 문제3 짝수 홀수 갯수
# 정수가 담긴 리스트 num_list 가 주어질 때,
# num_list 의 원소 중 짝수와 홀수의 개수를 담은 배열을
# return 하도록 solution 함수를 완성하라
# 단, 1<= num_list 의 길이 <= 100
# 0< num_list의 원소 <= 1000
'''
def solution(num_list):
count_1357 = 0
count_2468 = 0
for num in num_list:
if num % 2 == 0:
count_1357 += 1
else:
count_2468 += 1
return [count_1357, count_2468]
import random
num_list = random.sample(range(1, 1000), 20)
print(num_list)
print(solution(num_list))
'''
# print의 결과는
# [93, 126, 531, 241, 122, 591, 839, 36, 31, 263, 917, 389, 429, 276, 867, 909, 955, 951, 181, 355]
# [4, 16]
# 잘 된다!
# 문제4 배열 자르기
# 정수 배열 numbers 와 정수 num1, num2 가 매개변수로 주어질 때,
# numbers 의 num1 번째 인덱스부터 num2 번째 인덱스까지
# 자른 정수 배열을 return 하도록 solution 함수를 완성하라
# 단, 2<= numbers 의 길이 <= 30
# 0< numbers 의 원소 <= 1000
# 0< num1 < num2 < numbers 의 길이
'''
def solution(numbers, num1, num2):
answer = numbers[num1:num2+1]
return answer
import random
numbers = [random.randint(0, 1000) for _ in range(10)]
num1, num2 = random.sample(range(len(numbers)), 2)
print(numbers)
print(num1, num2)
print(solution(numbers, num1, num2))
'''
# print의 결과는
# [788, 450, 623, 400, 943, 408, 255, 380, 156, 687]
# 1 5
# [450, 623, 400, 943, 408]
# 잘 되는데 print를 위한 랜덤 구문을 만들기가 좀 어렵다
# 문제5 배열 원소의 길이
# 문자열 배열 strlist 가 매개변수로 주어진다
# strlist 각 원소의 길이를 담은 배열을
# return 하도록 solution 함수를 완성하라
# 단, 1< strlist 원소의 길이 <= 100
# strlist 는 알파벳 소문자, 대문자, 특수문자로 구성되어 있다
def solution(strlist):
answer = []
for s in strlist:
answer.append(len(s))
return answer
strlist = ['answer', 'apple', 'glad']
print(solution(strlist))
# print 결과는 [6, 5, 4]
# 문제6 배열 뒤집기
# 정수가 들어 있는 배열 num_list 가 매개변수로 주어진다
# num_list 의 원소의 순서를 거꾸로 뒤집은 배열을
# return 하도록 solution 함수를 완성하라
# 단, 1< num_list 의 길이 <= 1000
# 0<= num_list 의 원소 <= 1000
def solution(num_list):
answer = list(reversed(num_list))
return answer
# reversed() 함수는 iterable 한 객체(리스트, 튜플, 문자열 등)을 인자로 받아
# 그 순서를 거꾸로 뒤집은 iterator 를 반환한다.
# 저번에도 다루었으니 결과는 생략!
# 문제7 최댓값 만들기
# 정수 배열 numbers 가 매개변수로 주어진다
# numbers 의 원소 중 두 개를 곱해 만들 수 있는 최댓값을
# return 하도록 solution 함수를 완성하라
# 단, 0 <= numbers 의 원소 <= 10000
# 2 <= numbers 의 길이 <= 100
def solution(numbers):
max1 = max(numbers)
numbers.remove(max1)
max2 = max(numbers)
min1 = min(numbers)
numbers.remove(min1)
min2 = min(numbers)
answer = max(max1 * max2, min1 * min2)
return answer
numbers = [5, 6, 2, 9, 4]
print(solution(numbers))
# 그리디 알고리즘으로 쉽게 해결 가능하다고 한다.
# 알고리즘을 좀 공부해야 이해가 쉬울 것 같다