Algorithm__[TIL: 백준 For, While, 1차원 배열]

Jaewon Lee·2021년 5월 18일
0

Algorithm

목록 보기
4/36
post-thumbnail

On.


Algorithm


1. range 함수 배열만들기도 가능!

arr = range(5) = [0, 1, 2, 3, 4]

2. 파이썬의 Asterisk(*) 이해하기

✔️ 곱셈 및 거듭제곱 연산으로 사용할 때

2 * 2 = 4
2 ** 3 = 8

✔️ 리스트형 컨테이너 타입의 데이터를 반복 확장하고자 할 때

[0] * 3 = [0, 0, 0]
[1, 2] * 3 = [1, 2, 1, 2, 1, 2]
[[3, 4]] * 3 = [[3, 4], [3, 4], [3, 4]]

✔️ 가변인자 (Variadic Parameters)를 사용하고자 할 때

positional arguments만 받을 때

def save_ranking(*args):
    print(args)
save_ranking('ming', 'alice', 'tom', 'wilson', 'roy')

keyword arguments만 받을 때

def save_ranking(*args):
    print(args)
save_ranking('ming', 'alice', 'tom', 'wilson', 'roy')
# ('ming', 'alice', 'tom', 'wilson', 'roy')

positional arguments와 keyword arguments를 모두 받을 때

def save_ranking(*args, **kwargs):
    print(args)
    print(kwargs)
save_ranking('ming', 'alice', 'tom', fourth='wilson', fifth='roy')
# ('ming', 'alice', 'tom')
# {'fourth': 'wilson', 'fifth': 'roy'}

✔️ 컨테이너 타입의 데이터를 Unpacking 할 때

from functools import reduce

primes = [2, 3, 5, 7, 11, 13]

def product(*numbers):
    p = reduce(lambda x, y: x * y, numbers)
    return p

product(*primes)
# 30030

product(primes)
# [2, 3, 5, 7, 11, 13]

리스트나 튜플 데이터를 다른 변수에 가변적으로 unpacking 하여 사용하는 형태

numbers = [1, 2, 3, 4, 5, 6]

# unpacking의 좌변은 리스트 또는 튜플의 형태를 가져야하므로 단일 unpacking의 경우 *a가 아닌 *a,를 사용
*a, = numbers
# a = [1, 2, 3, 4, 5, 6]

*a, b = numbers
# a = [1, 2, 3, 4, 5]
# b = 6

a, *b, = numbers
# a = 1
# b = [2, 3, 4, 5, 6]

a, *b, c = numbers
# a = 1
# b = [2, 3, 4, 5]
# c = 6

참조: https://mingrammer.com/understanding-the-asterisk-of-python/

3. 문자열.count(string 변수)

✔️ 문자열 안에 원하는 string 변수가 몇 개 있는지 return 해준다.

a == '123456789011'
a.count('1') = 3

4. Assignment Expression (Walrus Operator)

✔️ 파이썬 3.7 이하에서는 아래와 같이 코드를 작성해야 했다.

a = [1, 2, 3, 4]
n = len(a)
if n > 5:
    print(f"List is too long ({n} elements, expected <= 5)")

✔️ len을 여러 번 호출하는 상황을 방지하기 위해, len의 출력값을 저장하는 변수 n을 사용하는데 라인 한 줄이 더 필요했다.
✔️ 바다코끼리 연산자를 사용하면 아래와 같이 n을 조건문 안에서 선언하고 값을 대입할 수 있다.

a = [1, 2, 3, 4]
if (n := len(a)) > 5:
    print(f"List is too long ({n} elements, expected <= 5)")

5. round, ceil, floor, trunc

✔️ round = 반올림
✔️ math.ceil = 올림
✔️ math.floor = 내림
✔️ math.trunc = 버림


Off.


프론트와 백을 넘나드는 리드 개발자가 되는 그날까지 🔥🔥🔥

profile
Communication : any

0개의 댓글