<로직 고민>
- numlist를 for문으로 돌리면서 하나씩 n으로 나눠서 나머지가 0이 아닌 경우 .remove()로 제거해볼까?
def solution(n, numlist):
for num in numlist:
if num % n != 0:
numlist.remove(num)
return numlist
print(solution(3, [4, 5, 6, 7, 8, 9, 10, 11, 12])) # [5, 6, 8, 9, 11, 12]
print(solution(5, [1, 9, 3, 10, 13, 5])) # [9, 10, 5]
print(solution(12, [2, 100, 120, 600, 12, 12])) # [100, 120, 600, 12, 12]
- 원하는 값이 나오지 않는군...왜지
- 반대로 나머지가 0일 때 해당 숫자를 빈 리스트에 추가해보자..
- 잉 근데 되네
- 근데 1점...ㅎ
- del 연산자를 써볼까
def solution(n, numlist):
for num in numlist:
if num % n != 0:
del numlist[num]
return numlist
# IndexError: list assignment index out of range
- 아 인덱스 번호를 써야 하는구나..!
- 그럼 드디어 여기서 enumrate를...!!
def solution(n, numlist):
for num, i in enumerate(numlist):
if num % n != 0:
del numlist[i]
return numlist
# IndexError: list assignment index out of range
- 흠 같은 오류이군...num이랑 i를 프린트 해보자
def solution(n, numlist):
for num, i in enumerate(numlist):
if num % n != 0:
print(num, i)
# del numlist[i]
# return numlist
# 출력화면
# 1 5
# 2 6
# 4 8
# 5 9
# 7 11
# 8 12
# None
# 1 9
# 2 3
# 3 10
# 4 13
# None
# 1 100
# 2 120
# 3 600
# 4 12
# 5 12
# None
- 앗 i랑 num 위치를 바꿔야겠군
def solution(n, numlist):
for i, num in enumerate(numlist):
if num % n != 0:
del numlist[i]
return numlist
print(solution(3, [4, 5, 6, 7, 8, 9, 10, 11, 12])) # [5, 6, 8, 9, 11, 12]
print(solution(5, [1, 9, 3, 10, 13, 5])) # [9, 10, 5]
print(solution(12, [2, 100, 120, 600, 12, 12])) # [100, 120, 600, 12, 12]
- 똑같군...뭐가 문제...지.....
- pop 해도 정답 안 나옴...
- append만이 답인 것인가
<완성된 코드>
def solution(n, numlist):
answer = []
for num in numlist:
if (num % n) == 0:
answer.append(num)
return answer
<다른 사람 풀이>
- 천재풀이1
def solution(n, numlist):
return list(filter(lambda v: v%n==0, numlist))
- 역시 또 한 줄짜리 코드가....
- 아니 어케 이런 생각이 가능하지....100문제 풀면 가능해질까...
- 천재풀이2
def solution(n, numlist):
return [num for num in numlist if num % n == 0]
- 내 코드 한 줄로 바꾸면 이건가
- 사실 축약 시도해 봤는데 어케 하는지 모르겠어서 계속 오류만 나고...그래서 포기..ㅎ