[코딩 기초 트레이닝]Day20 함수(메서드)
배열의 길이를 2의 거듭제곱으로 만들기
문제 설명
정수 배열 arr
이 매개변수로 주어집니다. arr
의 길이가 2의 정수 거듭제곱이 되도록 arr
뒤에 정수 0을 추가하려고 합니다. arr
에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤
arr
의 길이 ≤ 1,000 - 1 ≤
arr
의 원소 ≤ 1,000
입출력 예
arr | result |
---|---|
[1, 2, 3, 4, 5, 6] | [1, 2, 3, 4, 5, 6, 0, 0] |
[58, 172, 746, 89] | [58, 172, 746, 89] |
solution
def solution(arr):
for i in range(len(arr)):
if len(arr) <= 2**i:
return arr + ([0] * (2**i - len(arr)))
---------------------------------------------
def solution(arr):
a = 1
b = len(arr)
while a < b :
a *= 2
return arr + [0] * (a-b)
배열 비교하기
문제 설명
이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.
- 두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
- 배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
두 정수 배열 arr1
과 arr2
가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2
가 크다면 -1, arr1
이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤
arr1
의 길이 ≤ 100 - 1 ≤
arr2
의 길이 ≤ 100 - 1 ≤
arr1
의 원소 ≤ 100 - 1 ≤
arr2
의 원소 ≤ 100 - 문제에서 정의한 배열의 대소관계가 일반적인 프로그래밍 언어에서 정의된 배열의 대소관계와 다를 수 있는 점에 유의해주세요.
입출력 예
arr1 | arr2 | result |
---|---|---|
[49, 13] | [70, 11, 2] | -1 |
[100, 17, 84, 1] | [55, 12, 65, 36] | 1 |
[1, 2, 3, 4, 5] | [3, 3, 3, 3, 3] | 0 |
solution
def solution(arr1, arr2):
if len(arr1) > len(arr2):
return 1
elif len(arr1) < len(arr2):
return -1
else:
if sum(arr1) > sum(arr2):
return 1
elif sum(arr1) < sum(arr2):
return -1
else: return 0
----------------------------------------------
def solution(arr1, arr2):
return (len(arr1) > len(arr2)) - (len(arr2) > len(arr1)) or (sum(arr1) > sum(arr2)) - (sum(arr2) > sum(arr1))
>비교 연산을 했을 때, 참일 경우 1을 반환 거짓일 경우0을 반환하는데, 그래서 자연스럽게 1 or -1이 반환됩니다. 두 값이 같은 경우는 둘 다 거짓이기 때문에 0을 반환합니다.
문자열 묶기 😣
문제 설명
문자열 배열 strArr
이 주어집니다. strArr
의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤
strArr
의 길이 ≤ 100,000- 1 ≤
strArr
의 원소의 길이 ≤ 30 strArr
의 원소들은 알파벳 소문자로 이루어진 문자열입니다.
- 1 ≤
입출력 예
strArr | result |
---|---|
[“a”,”bc”,”d”,”efg”,”hi”] | 2 |
solution
def solution(strArr):
new = []
zarr = [0] * len(strArr)
for i in strArr:
zarr[len(i)] += 1
return max(zarr)
배열의 길이에 따라 다른 연산하기
문제 설명
정수 배열 arr
과 정수 n
이 매개변수로 주어집니다. arr
의 길이가 홀수라면 arr
의 모든 짝수 인덱스 위치에 n
을 더한 배열을, arr
의 길이가 짝수라면 arr
의 모든 홀수 인덱스 위치에 n
을 더한 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤
arr
의 길이 ≤ 1,000 - 1 ≤
arr
의 원소 ≤ 1,000 - 1 ≤
n
≤ 1,000
입출력 예
arr | n | result |
---|---|---|
[49, 12, 100, 276, 33] | 27 | [76, 12, 127, 276, 60] |
[444, 555, 666, 777] | 100 | [444, 655, 666, 877] |
solution
def solution(arr, n):
new = []
for i in range(len(arr)):
if len(arr) % 2 == 1:
if i % 2 == 0:
new.append(arr[i] + n)
else:
new.append(arr[i])
else:
if i % 2 == 1:
new.append(arr[i] + n)
else:
new.append(arr[i])
return new
-----------------------------------------
def solution(arr, n):
N=len(arr)
if N%2:
for i in range(0,N,2): arr[i]+=n
else:
for i in range(1,N,2): arr[i]+=n
return arr
뒤에서 5등까지
문제 설명
정수로 이루어진 리스트 num_list
가 주어집니다. num_list
에서 가장 작은 5개의 수를 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
제한사항
- 6 ≤
num_list
의 길이 ≤ 30 - 1 ≤
num_list
의 원소 ≤ 100
입출력 예
num_list | result |
---|---|
[12, 4, 15, 46, 38, 1, 14] | [1, 4, 12, 14, 15] |
solution
def solution(num_list):
return sorted(num_list)[:5]
댓글남기기