A. 금일 학습 내용

1. 코딩 테스트 문제

어떤 정수들이 있다.
이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 
이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어진다.

제한사항
- absolutes의 길이는 1 이상 1,000 이하이다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하이다.
- signs의 길이는 absolutes의 길이와 같다.
- signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미한다.
실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성하라.
def solution(absolutes, signs):
    answer = 0
    for i in range(len(absolutes)):
        if signs[i] is True:
            answer += absolutes[i]
        else:
            answer -= absolutes[i]

    return answer

- 오늘의 코딩 테스트 문제였다.

- 어렵지 않게 풀었지만 다른 사람들의 코드를 살펴보니 zip() 함수를 많이 사용하였다.

 

-- 타인 코드1)

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

 

-- 타인 코드2)

def solution(absolutes, signs):
    answer=0
    for absolute,sign in zip(absolutes,signs):
        if sign:
            answer+=absolute
        else:
            answer-=absolute
    return answer

 

2. zip() 함수

- 정의: 동일한 개수(=길이가 같음)로 이루어진 자료형을 묶어주는 역할을 하는 내장함수이다.

- 데이터는 위와 같은 형태이다.

- absolutes의 길이가 3이고 signs의 길이 또한 3임으로 zip()함수를 사용할 수 있다.

- 사용한다면 아래와 같이 리스트 형태의 결과가 나온다.

 

2. 두 변수의 자료형이 다르다면 어떤 결과가 나올까.

a = [1,2,3,4,5,6]
b = 'python'

list(zip(a,b))

 

- a변수는 리스트 형태, b변수는 문자열 형태로 zip함수를 사용해보았다.

 

- 소괄호로 묶인 튜플 형태로 반환되는 것을 알 수 있다.

 

B. 마무리

- 튜플로 묶이는 이유는 무엇인지 궁금하다

- 내장함수는 얼마나 많이 있는 것일까.

+ Recent posts