본문 바로가기

코딩테스트 with Python

[파이썬] 내장 함수 zip

zip() 

 

한 번에 두개 이상의 인자에 접근하면서 for 문을 돌고 싶을 때 사용 

 

문제1)

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.

이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)

 

a = [1, 2, 3, 4]

b = [-3, -1, 0, 2]

result -> 3

 

내가 짠 코드

def solution(a, b):
    answer = 0
    for i in range(len(a)):
        answer += a[i]*b[i]    
    return answer

 

zip 함수 활용

def solution(a, b):
    answer = 0
    for i, j in zip(a,b):
        answer += i*j
    return answer

병렬로 한꺼번에 데이터를 처리할 때 편한 거 같다. 

 

문제2)

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

absolutes = [4, 7, 12]

signs = [true, false, true]

result = 0

 

내가 짠 코드

def solution(absolutes, signs):
    signs = list(map(sign,signs))
    answer = 0
    for i,j in zip(absolutes,signs):
        answer += i*j
    return answer

한줄 코드

def solution(absolutes, signs):
    return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))

sum(iterable, start)

 

iterable: iterable하고 numeric한 value를 가져야함

start: 처음으로 또 더해줄 숫자

return 값 -> literable합 + start값

'코딩테스트 with Python' 카테고리의 다른 글

다중 집합  (0) 2022.01.21
[파이썬] 빈 리스트 확인 하는법  (0) 2022.01.06
[파이썬] itertools ,순열, 조합 등  (0) 2022.01.01
[파이썬] Counter 객체  (0) 2021.12.28
[파이썬] 문자열 method replace()  (0) 2021.12.28