본문 바로가기
코딩테스트

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

by hammii 2024. 2. 26.

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라는 함수를 재정의 함으로써, 정렬 기준을 커스텀할 수 있다.