[Python] 코딩 도장 - 자신을 제외한 곱셈
Updated:
코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.
코딩 도장에서 여러 문제를 확인할 수 있습니다.
난이도 순으로 차근차근 풀어보려 합니다.
[문제: 자신을 제외한 곱셈] - Lv.1
배열 [a, b, c, d]를 입력하면 배열[bcd, acd, abd, abc]를 출력하는 코드를 작성하시오.
(단, 나눗셈 사용 금지)
입출력되는 배열은 어떤 형식이든 상관없습니다.
입력 예시
2, 6, 4, 7
출력 예시
168, 56, 84, 48
출처: https://codingdojang.com/scode/591?answer_mode=hide
[풀이]
from functools import reduce
def prod_del(x):
lst2 = []
range_lst = range(len(x))
for i in range_lst:
lst = [x[j] for j in range_lst if j!=i]
lst2.append(reduce(lambda x,y: x*y, lst))
return lst2
prod_del([2,4,6,7])
[168, 84, 56, 48]
처음 입력받은 배열에서 순서대로 자기 자신을 제외한 리스트를 생성하였다.
후에 reduce()
를 이용해서 리스트 내의 모든 숫자를 곱해주는 방식으로 계산하였다.
[추천 풀이]
def exclude(mylist):
new_list = []
for i in range(len(mylist)) :
sum = 1
for j in range(len(mylist)):
if i == j : pass
else :
sum *= mylist[j]
new_list.append(sum)
return new_list
print(exclude([2,6,4,7]))
[168, 56, 84, 48]
내가 2개의 for문을 이용해서 자기 자신을 제외한 리스트를 생성하였다면, 이 분은 바로 곱해주는 방식을 사용하였다.
아이디어의 큰 차이는 없는 것 같다.
Leave a comment