# Programmers 알고리즘
문제 : rm_small함수는 list타입 변수 mylist을 매개변수로 입력받습니다.
mylist 에서 가장 작은 수를 제거한 리스트를 리턴하고, mylist의 원소가 1개 이하인 경우는 []를 리턴하는 함수를 완성하세요.
ex) mylist가 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10, 8, 22]면 [10, 22]를 리턴 합니다.
[정리]
1. 위 문제는 파이썬만 지원
2. 중복된 숫자에 대한 처리사항 없음
3. 리스트에 저장된 순서를 변경하지 않고 가장 작은 수만 제거
[예]
O : [4, 3, 1, 2] >> [4, 3, 2]
X : [10, 8 , 22, 1, 0] >> [1, 8, 10, 22]
※ Environment : Python
#myself
1 2 3 4 5 6 7 8 9 10 11 12 13 | def rm_small(mylist): cnt = len(mylist) small = mylist[0] if cnt <= 1: mylist = [] else: for i in mylist: if small > i: small = i mylist.remove(small) return mylist | cs |
+ len() 메서드를 이용하여 리스트 총 개수 확인
+ small 변수에 리스트 첫 번째 값을 대입 (비교값으로 사용하기 위함)
+ 리스트의 값을 i에 대입하고, small과 비교하여 small이 더 클 경우 i 값을 small에 대입
+ remove() 메서드를 이용하여 small 값 삭제
++ 탭(Tab)으로 구문을 구분하기 때문에 신경써야함
#1
1 2 | def rm_small(mylist): return [i for i in mylist if i > min(mylist)] | cs |
+ 프로그래머스 회원들이 리플을 많이단 소스 코드
+ 해당 소스 코드는 중복까지 처리됨
+ min()메소드 활용
+ 문법이 다른 언어에 비해 유연하여 간결해 보임
# mylist = [4, 3, 2, 1]
# 4번 반복
1. if 4 > 1 -> true : [4]
2. if 3 > 1 -> true : [4, 3]
3. if 2 > 1 -> true : [4, 3, 2]
4. if 1 > 1 -> false
5. Result
# return [4, 3, 2]
#2
1 2 3 | def rm_small(mylist): mylist.pop(mylist.index(min(mylist))) return mylist | cs |
+ 반복문 없이 min()과 index()메소드를 이용하여 한 번에 가장 작은 수를 pop()하여 리스트에서 제거하는 코드
+ 중복이 없다는 가정하에 제일 깔끔해 보임
'Algorithm' 카테고리의 다른 글
피보나치 수열 (0) | 2017.09.26 |
---|---|
행렬 덧셈 (0) | 2017.09.25 |
최대공약수/최소공배수 (0) | 2017.09.24 |