[코딩테스트] Python - 많이 사용되는 문법들.zip

김희정·2024년 2월 6일
0

Coding Test

목록 보기
3/7

들어가며

프로그래머스를 풀어보면서 유용한 문법들을 정리해보았습니다.


1. Int

boolean to int

int() 내장 함수를 통해서 Boolean 값을 int로 변환할 수 있습니다.

int(True) # 출력: 1
int(False) # 출력: 0

2. List

list comprehension

파이썬의 리스트가 특이한 점은 리스트 안에 for 반복문과 if 조건문을 사용할 수 있다는 점입니다.

이렇게 리스트 안에 식, for 반복문, if 조건문 등을 지정하여 리스트를 생성하는 것을 리스트 컴프리헨션(list comprehension)이라고 합니다.

# Syntax
arr = [for 변수 in 리스트]

# 0부터 9까지 숫자를 생성하여 리스트 생성
>>> a = [i for i in range(10)]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 0~9 숫자 중 홀수에 5를 더하여 리스트 생성
>>> b = [i + 5 for i in range(10) if i % 2 == 1]    
>>> b
[6, 8, 10, 12, 14]

list를 string으로 변환

리스트를 이어붙여 만들어야되는 문제들이 종종 발생합니다.

문제 예시

문자들이 담겨있는 배열 arr가 주어집니다. arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요.

ref: https://school.programmers.co.kr/learn/courses/30/lessons/181941

이 때, 문자열의 join 메소드를 이용하면 간단하게 해결할 수 있습니다.

def solution(arr):
	return ''.join(arr)

list 뒤집기

리스트를 뒤집는 방법에는 아주 간단한 방법이 있습니다.

>>> a = [e for e in range(1, 6)] # [1, 2, 3, 4, 5]
>>> a[::-1]
[5, 4, 3, 2, 1]

map()

파이썬 map() 함수는 여러 개의 데이터를 받아서 각각의 요소에 함수를 적용한 결과를 반환하는 내장 함수입니다. 리스트, 튜플 등의 반복 가능한(iterable) 객체를 입력으로 받을 수 있습니다.


map(function, iterable)

map() 함수는 순회 가능한 데이터(iterable)의 각 요소에 대해 변환 함수(function)를 적용한 결과를 새로운 iterator를 반환합니다.

이때, 변환 함수는 각 요소를 인자로 받아서 처리하며, 함수의 반환값이 새로운 iterator의 각 요소가 됩니다.

def square(x):
    return x**2

>>> numbers = [1, 2, 3, 4, 5]
>>> print(list(map(square, numbers)))
[1, 4, 9, 16, 25]

이 때 간편하게 작성하기 위해 익명 함수(lambda)를 사용할 수 있습니다.

>>> print(list(map(lambda x: x** 2 , numbers)))
[1, 4, 9, 16, 25]

reduce()

파이썬의 functools 내장 모듈의 reduce() 함수는 여러 개의 데이터를 대상으로 주로 누적 집계를 내기 위해서 사용됩니다.


from functools import reduce

reduce(집계 함수, 순회 가능한 데이터[, 초기값])

reduce()는 내장 함수가 아니므로 functools 모듈을 통해서 임포트해줘야 사용할 수 있습니다.


reduce 함수를 살펴보면, 두개의 인자를 받아야 하는데요.

첫번째 인자는 누적자(accumulator), 두번째 인자는 현재값(current value)가 넘어오게 됩니다. 누적자는 함수 실행의 시작부터 끝까지 계속해서 재사용되는 값이고, 현재값은 루프 돌면서 계속해서 바뀌는 값입니다.

scores = [85, 99, 100, 67, 98];
reduce(lambda x, y: x+y, scores);

성적의 합계를 구하는 것을 예시로 들 수 있습니다.


enumerate()

enumerate() 내장 함수는 순서가 있는 자료형(tuple, list, string)을 첫번째 인자로 받아서 각각의 index 값과 value 값들을 enumerate 객체로 리턴한다.

C, C++, Java 등의 언어에서는 i, j 와 같이 index 변수를 가지고 반복문을 사용하지만 Python에서는 리스트(list), 딕셔너리(Dictionary) 등에 접근할 때 for value in arr: 와 같이 index 변수를 사용하지 않고도 편리하게 사용할 수 있습니다.

하지만 종종 value 와 함께 index 값이 필요한 경우가 있는데, 이 때 enumerate 내장 함수를 이용하면 쉽게 index를 얻을 수 있습니다.

arr = ['a', 'b', 'c']
for idx, element in enumerate(arr):
    print(idx, element)

# Output:
# 0 'a'
# 1 'b'
# 2 'c'

3. Dequeue

파이썬의 collections 내장 모듈의 deque() 함수를 이용하여 Dequeue 자료구조를 사용할 수 있습니다.

>>> from collections import deque
>>> a = [1, 2, 3, 4, 5]
>>> q = deque(a)
>>> q.rotate(2)  #시계방향 회전은 양수, 그 반대는 음수
>>> result = list(q)
>>> result
[4, 5, 1, 2, 3]

Refereneces

profile
Java, Spring 기반 풀스택 개발자의 개발 블로그입니다.

0개의 댓글