코딩테스트

코딩테스트에 유용한 python 함수

hammii 2024. 2. 26. 11:11

Python은 코딩테스트에 유리한 내장함수들을 지니고 있다.

사내 코딩테스트를 준비하면서 기본 문법 외에 추가로 공부했던 python 함수들을 공유해보려고 한다.

 

최대공약수(GCD)와 최소공배수(LCM)

import math

gcd = math.gcd(숫자1, 숫자2)
lcm = 숫자1 * 숫자2 // gcd

 

str 거꾸로 출력하기

word = 'hello'
word[::-1] # olleh

 

divmod - 몫과 나머지 구하기

숫자1을 숫자2로 나눴을 때 (몫, 나머지)

divmod(숫자1, 숫자2)

divmod(4,2) # (2, 0)
divmod(8,3) # (2, 2)

 

문자열 치환

문자열.replace(원래단어, 바꿀단어)

word = 'hello'
word.replace('ello', 'i') # hi

 

최대, 최소

score = [1,2,3]

min(score) # 1
max(score) # 3

b = 'BlockMask'
min(b) # 'B'
max(b) # 's'

 

소수 찾기

def isPrime(n):
	if n == 1: return False

	for i in range(2, int(n**0.5)+1):
		if n % i == 0:
			return False
	return True

 

아스키코드 변환

ord(문자)
chr(정수)

ord('a') # 97
chr(97) # 'a'

 

map 을 이용한 형 변환

a = [1.2, 2.5, 3.7, 4.6]
a = list(map(int, a)) # [1, 2, 3, 4]

 

n진수 변환

bin(숫자) # 2진수
oct(숫자) # 8진수
hex(숫자) # 16진수

bin(10) # 0b1010
bin(10)[2:] # 1010

def convert(n, k):
	result = ''

	while n >= k:
		result += str(n % k)
		n = n // k
	result += str(n)

	return result[::-1]

 

defaultdict

from collections import defaultdict

int_dict = defaultdict(int) # default 값이 int인 딕셔너리
int_dict['key1'] # 0

 

정렬 기준 - cmp_to_key

from functools import cmp_to_key

def compare(a, b):
	if a > b:
		return 1 # 자리를 바꾼다.
	else:
		return -1 # 자리를 바꾸지 않는다.

sorted(리스트, key=cmp_to_key(compare))

compare라는 함수를 재정의 함으로써, 정렬 기준을 커스텀할 수 있다.