문제풀이(Problem Solving)

코딩테스트에 쓸 법한지식들 [ 파이썬, Python]

게임이 더 좋아 2021. 3. 19. 07:28
반응형
728x170

 

파이썬에서 맨날 틀리거나 약간씩 헷갈리는 것들은 다시 보자

 

iterable한 것들에는 리스트, 튜플, 문자열 등이 있음

 

 

filter(조건(메서드), iterable한 것들)

return하는 것은 객체이며 객체를 리턴하기 때문에 lilst와 많이씀

 

조건에는 boolean을 return 하는 메서드가 온다.

lambda가 많이 온다. -> 메서드를 간단히 구현하는 방법이기 때문

 

EX) lst = list(filter(lambda x: x%2 == 0, numbers)

numbers에서 반복해서 뽑아내 lambda x에 할당시켜 x%2 == 0이 True인 것만 뽑아내서 list에 담겠다.

 

 

lambda "매개변수" : 식1 if 조건식1 else 식2 if 조건식2 else 식3

 

메서드를 만드는 간단한 식이다.

map 메서드와 같이 적용되곤한다.

 

lambda x: x**2 -> 제곱하는 메서드

 

lst = list(map(lambda x: x**2 , numbers))

numbers에서 하나씩 뽑아내어 메서드를 적용시키고 그 후 리스트로 변환

 

 

map("조건", iterable한 것들)

 

 return 하는 것이 객체이므로 list와 같이 쓰는 경우가 흔하다.

 

iterable한 객체를 하나씩 뽑아내어 모든 요소에 메서드를 적용시키는 것이다.

 

위의 예를 보면 되겠다.

 

 

 

math 라이브러리에 쓸만한 메서드들

 

조합, Combination 

comb(n,k)

n개의 항목 에서 k 개의 항목을 선택하는 방법의 수를 리턴

정수만 넣어야 하며, 음수를 넣어서는 안된다.

 

factorial(x)

x!를 반환

음수가 아닌 정수들만 넣어야함

 

gcd(a,b.....) , lcm(a,b,...)

최대공약수 리턴, 최소공배수 리턴

3.9버전에서는 임의의 개수 가능

그 전 버전에서는 2개만 가능 (최소공배수는 불가)

음수가 아닌 정수만 넣어야함

 

pow(x,y)

x의 y 거듭제곱 반환

 

sin(x),cos(x) tan(x)

x라디안 값으로 계산해서 반환

 

degrees(x)

라디안을 도(degree)로 변환해서 리턴

 

radians(x)

degree를 라디안으로 변환해서 리턴

 

pi = 3.141592...

정말 파이 

 

 

sqrt(x)

x의 제곱근 반환

 

 

Enumerate( iterable 한 객체)

 

주로 어떻게 쓰이냐?

enumerate는 index와 value을 같이 반환한다.

 

 

queue [(i,x)for i,x in enumerate(queue) ] 

-> 여기서 i는 index 가 된다. x는 value이 된다.

 

list comprehension으로 많이 쓴다.

 

리스트에서 값이 같을 경우 어떻게 구분해? -> 위와 같이 처음에 들어있던 index로 구분한다

 

 

HEAPQ  라이브러리

 

이 heap에는 특성이 있다. 최솟값이 루트노드에 항상 있다.

때문에 최솟값을 항상 요구하는 자료구조를 원한다면 heap을 쓰는 것이 좋다. 

 

heappush("내가 넣고자 하는 힙", "넣을 대상")

힙의 특성은 유지한다(최솟값이 루트노드)

 

heappop("내가 꺼내고자 하는 힙")

루트노드를 꺼내므로, 최솟값을 꺼낼 수 있다.

 

heapify(x)

리스트 x를 선형 시간으로 제자리에서 힙으로 변환한다.

 

 

zip(iterable한 객체'들') 

 

Returns an iterator of tuples, where the i-th tuple contains the i-th element from each of the argument sequences or iterables.

즉, 튜플로 반환하지만 객체로 반환하기에

list를 붙여서 사용하는 것이다.

i번째 튜플은 각 이터러블한 객체의 i번째 요소들로 이루어져있다.

 

**iterable 객체의 길이가 다르면 짧은 쪽에 맞춰서 거기까지만 만들어진다.

 

위와 같은 zip은 정렬되어있는 상태에서 쓰는 것이 기본이다.

아무거나 짝지으면 안되자낭

 

 

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]

예를 들면 위와 같다.

 

객체들의 순서대로 짝을 지어주는 것이다.

 

아스키코드<-> 문자

 

ord("문자") -> 숫자가 리턴된다.

chr(숫자) -> 문자가 리턴된다.

 

A = 65

...

Z= 90

 

A-Z의 개수는 26이지만

Z-A는 25가 나온다.

 

any(iterable 객체)

어느 하나라도 참이면, 어느 하나라도 0이 아닌 값이 있다면

True를 return한다.

무엇인가 판별하기에 좋은 방법이다.

 

bin(integer)

정수를 2진법으로 교체해준다.

《0b》 가 앞에 붙은 이진 문자열로 바꿔준다

7이면

'0b111'이 된다.

-10이면

'-0b1010'

 

직접 2진수로 만들어도 된다.

 

sorted(iterable한 객체, *, key=None, reverse=False)

 

key는 하나의 인자를 받는 메서드(함수)만 가능하다.

정렬해주는 정말 좋은 친구다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
그리드형