Python으로 준비하는 코딩테스트 - 나의 Cheat Seet!

김지원·2022년 5월 8일
0

🎈 이진 탐색하기 - bisect

import bisect
mylist = [1, 2, 3, 7, 9, 11, 33]
print(bisect.bisect(mylist, 3))

🤸‍♀️곱집합 구하기 - product

import itertools

iterable1 = 'ABCD'
iterable2 = 'xy'
iterable3 = '1234'
itertools.product(iterable1, iterable2, iterable3)

약수 구하기

def getMyDivisor(n):

    divisorsList = []

    for i in range(1, int(n**(1/2)) + 1):
        if (n % i == 0):
            divisorsList.append(i) 
            if ( (i**2) != n) : 
                divisorsList.append(n // i)

    divisorsList.sort()
    
    return divisorsList

최대공약수 구하기

# 최대공약수
def gcd(a, b):
  if b ==0:
    return a
  if a%b ==0:
    return b
  else:
    return gcd(b, a%b)

🕐 시간 계산하기

def toMinutes(time):
		h,m=map(int,time.split(":"))
		return h*60+m

🎨 리스트 관련

❓ Index error 관련

  • 인덱싱: 지정된 인덱스의 값을 return 받기 떄문에 해당 인덱스 값이 없으면 error 발생
  • 인덱스 슬라이싱: 해당하는 sequence를 return 받기 때문에 해당 sequence가 없으면 빈 배열을 return

Q) 2차원 리스트를 1차원 리스트로

# 방법 1 - sum 함수
answer = sum(my_list, [])
# 방법 5 - reduce 함수 이용1
from functools import reduce
list(reduce(lambda x, y: x+y, my_list))

Q) 2차원 배열에서 특정 열 값들만 더하고 싶은경우?

sum(map(lambda x:x[1], nums))

Q) 세로 열만 추출하기

list(map(lambda x:x[0], nums))

lambda

lambda x: x*3

이게 어느 문제에서 썼던 거더라..

리스트의 원소를 포함하는지(순서 고려해서)

for i, value in enumerate(melody):
		if m==melody[i:i+len(m)]:
				print("yes")

2차원 리스트 뒤집기 - zip 사용

2차원 리스트 (i,j)를 (j,i)로 바꿔보기

mylist = [ [1,2,3], [4,5,6], [7,8,9] ]
new_list = list(map(list, zip(*mylist)))

📗 Dictionary 관련

초기화 하기

mydict={x:0 for x in _list}
# from collections import defaultdict
mydict=defaultdict(list)

✨ 정렬 관련

reverse

nums.sort(reverse=True)

key

nums.sort(key=lamda x: (x[0], -x[1]))
profile
Make your lives Extraordinary!

0개의 댓글