[python] 코딩테스트에서 알아두면 좋은 기본 함수

Recorder·2021년 7월 19일
0

Python 기본 문법을 알고 있다고 가정할 때, 추가적으로 알고 있으면
코딩테스트 등에서 효율적으로 사용할 수 있는 몇 가지 함수들을 정리해두었다.


1. list()

괄호 속 string을 배열로 바꿔 준다.

ex)

list("fjs123")

#결과 : ['f', 'j', 's', '1', '2', '3']

2. "".join()

"구분자".join(배열)
의 형태로 작성 시, 배열을 하나의 string으로 바꾸어 준다.

ex)

"_".join(['1', '24','a'])       # result : '1_24_a'
"".join(['1', '24','a'])       # result : '124a'

3. map()

list(map(함수A, 리스트A))
형태로 사용하면, 리스트A 속 원소들로 하나씩 함수A를 실행한 결과 리스트를 얻을 수 있다.
(리스트 대신 튜플을 사용해도 무방하다.)

ex)

list(map(int, [1.2, '2', 3.7, '4']))    # result : [1, 2, 3, 4]
list(map("".join, [['1.2', '2'], ['3.7', '4']]))      # result : ['1.22', '3.74'] 

4. enumerate()

반복문에서 해당 함수를 이용하면, 리스트의 원소와 인덱스를 동시에 사용할 수 있다.

ex)

for index, element in enumerate(리스트) :

5. permutations()

itertool의 permutations() 함수를 이용하면, 배열 속 원소로 만들 수 있는 모든 길이 n의 순열을 구할 수 있다.
from itertool import permutations
를 선언한 후
permutations(배열, 개수)
형태로 사용한다.

from itertool import permutations
permutations(배열, 개수)

6. zip()

매개변수로 받은 배열들을 같은 index끼리 매칭하여 묶어준다.

list(zip([1,2,3], [a, b, c]))      #result :[(1, a), (2, b), (3, c)] 

7. filter()

list에서 조건에 맞는 원소만 추출한다.

list(filter(lambda x: x >= n, 배열))

8. cmp_to_keys()

비교함수 return 값이 1이면 a를 앞으로, -1이면 b를 앞으로(같으면 0)

import functools
배열.sort(key=functools.cmp_to_key(비교함수))

def 비교함수(a, b):
	return a - b

1. 집합 set

python의 set은 집합을 의미한다.
집합의 특성을 활용하여, 중복제거 등 여러 유용한 작업을 수행할 수 있다.

A. 선언 : set()

집합 선언을 선언할 땐 set() 함수를 사용할 수 있다.

예)

a=set()        # {}
a=set([1,2,3])       # {1, 2, 3}

집합을 선언할 때 한 가지 주의할 점이 있다.
집합을 만들고 나면 출력 형태는 { } 이지만, 선언 시 a={}라고 하면 안 된다는 것이다.
이는 {}는 그 자체론 dictionary를 의미하기 때문이다.

a={}
print(type(a))         # <class 'dict'>

를 시도해보면 이를 확인할 수 있다.
따라서 반드시

a={1,2,3}
a=set()
a=set([1,2,3])

등의 방식을 사용해야 한다.

B. 중복삭제

집합의 가장 유용한 특성은 중복이 사라진다는 것이다.
즉 리스트에서 중복을 삭제하고 싶을 땐,
set(리스트) 함수로 집합으로 바꾸면 쉽게 할 수 있다.

예)

set(['1', '1', '3', '2', '2', 'a', 'a'])    # result : {'3', '1', 'a', '2'}

C. 추가/제거

집합에 원소를 추가하거나 제거하는 작업은 함수로 간단히 할 수 있다.

집합.add(원소) # 한 개 추가
집합.update(배열/집합) # 여러 개 추가
집합.remove(원소) # 하나 삭제(원소가 없으면 KeyError)
집합.discard(원소) # 하나 삭제(원소가 없어도 에러 발행하지 않음)

D. 집합 연산

집합의 기본적인 연산인 합집합, 교집합, 차집합, 대칭차집합도 모두 간단히 계산할 수 있다.
연산자(|&-^)로 하는 방식과 함수로 하는 방식 2가지가 있다.

  • 합집합
집합A | 집합B
집합A.union(집합B)
  • 교집합
집합A & 집합B
집합A.intersection(집합B)
  • 차집합
집합A - 집합B
집합A.difference(집합B)
  • 대칭차집합(합집합 - 교집합)
집합A ^ 집합B
집합A.symmetric_difference(집합B)
profile
기억은 나 대신 컴퓨터가

0개의 댓글