05 Mar 2017
|
알고리즘
프로그래밍
level 1. 제일 작은 수 제거하기
출처
문제
rm_small함수는 list타입 변수 mylist을 매개변수로 입력받습니다.
mylist 에서 가장 작은 수를 제거한 리스트를 리턴하고, mylist의 원소가 1개 이하인 경우는 []를 리턴하는 함수를 완성하세요.
예를들어 mylist가 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10, 8, 22]면 [10, 22]를 리턴 합니다.
풀이 (python)
# 풀이1
def rm_small(mylist):
mylist.remove(min(mylist)) #min() - O(N) 시간복잡도
return mylist
# 풀이2 - filter 사용
def rm_small(mylist):
return list(filter(lambda x: x > min(mylist), mylist))
# 풀이3
def rm_samll(mylist):
return [i for i in mylist if i > min(mylist)]
# 아래는 테스트로 출력해 보기 위한 코드입니다.
my_list = [4, 3, 2, 1]
print("결과 {} ".format(rm_small(my_list)))
배운점
- min(), max() 함수를 이용하면 인수로 반복 가능(iterable)한 자료형을 입력받아 그 최소값, 최대값을 리턴한다.
- iterable 의 의미는 member를 하나씩 차례로 반환 가능한 object를 말한다.
- iterable 의 예로는 sequence type인 list, str, tuple,dic 이 대표적이다.
05 Mar 2017
|
알고리즘
프로그래밍
level 1. 평균구하기
출처
문제
def average(list):
함수를 완성해서 매개변수 list의 평균값을 return하도록 만들어 보세요.
어떠한 크기의 list가 와도 평균값을 구할 수 있어야 합니다.
풀이 (python)
def average(list):
v = 0
for i in list:
v = v + i
return v / len(list)
# 아래는 테스트로 출력해 보기 위한 코드입니다.
list = [5,3,4]
print("평균값 : {}".format(average(list)));
#풀이1 - ZeroDivisionError 예외처리 필요
def average(list):
return sum(list) / len(list) # sum() - O(N) 시간복잡도
#풀이2 - ZeroDivisionError 예외처리
def average(list):
if not len(list):
return 0
return sum(list) / len(list)
#풀이3 - reduce, lambda
from functools import reduce
def average(list):
return reduce(lambda x,y: x+y) / len(list)
다른사람 풀이
def average(list):
return (sum(list) / len(list))
배운점
- sum 함수를 사용하면 리스트 각 요소들의 총 합을 구할 수 있구나!
풀이 1 (java)
public class GetMean {
public int getMean(int[] array) {
int sum = 0;
for (int e : array) {
sum += e;
}
return sum / array.length;
}
public static void main(String[] args) {
int x[] = {5, 4, 3};
GetMean getMean = new GetMean();
System.out.println("평균값 : " + getMean.getMean(x));
}
}
풀이 2 (java)
import java.util.stream.*;
public class GetMean {
public int getMean(int[] array) {
int sum = IntStream.of(array).sum();
return sum / array.length;
}
public static void main(String[] args) {
int x[] = {5, 4, 3};
GetMean getMean = new GetMean();
System.out.println("평균값 : " + getMean.getMean(x));
}
}
배운점
- java.util.stream 패키지를 통해서 array의 합계를 구할 수 있다.