[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