Algorithm
Algorithm with python
쑤야.
2024. 2. 1. 12:26
파이썬으로 알고리즘을 풀기 위해 필요한 개념들을 정리합니다.
문자열
- 문자열의 대/소문자화.
.upper() # 대문자
.lower() # 소문자
- 특정 문자를 기준으로 문자열 분리
.split(문자)
- 문자열의 리스트화
list(문자열)
- 리스트화된 문자열 다시 문자열로 변환하기
''.join(문자열 배열)
- 알파벳으로만 구성되어있는지 확인
문자열.isalpha()
배열
- 원소 추가
배열.append(원소)
- 마지막 원소 삭제
배열.pop()
del 배열[-1]
- 첫 번째 원소 삭제
삭제한 원소 = 배열.pop(0) #삭제한 원소를 반환한다.
- 조건을 충족하는 첫 번째 인덱스 찾기
arr.index(원소 값)
- 정렬
배열.sort() # 오름차순
배열.sort(reversed=True) # 내림차순
- 원소의 길이로 정렬
arr.sort(key=len)
- 정렬 후, 새로운 배열로 반환
sorted(배열) #오림차순
sorted(배열, reverse=True) #내림차순
- 다중 정렬
//1번 인덱스로 내림차순. 만약 동일하다면 0번 인덱스로 오름차순 정렬
sorted(genre[g[0]], key=lambda x: (x[1], -x[0]), reverse=True)
- map으로 배열 값 변환하기
list(map(int, 배열)) # str을 int로 변환
list(map(lambda x:x-1, 배열)) #원소값을 -1 시킨다
- 필터문
list(filter(lambda n : 조건문 ,arr))
- 커스텀 함수로 정렬
import functools
def comparator(a,b):
if a+b > b+a :
return 1
elif a+b < b+a:
return -1
else:
return 0
def solution(numbers):
n = list(map(str,numbers))
n = sorted(n, key=functools.cmp_to_key(comparator), reverse=True)
딕셔너리
- 빈 딕셔너리 선언.
cache = {}
- 딕셔너리에 값이 존재하는지 체크.
if 키 in 딕셔너리
- 최소값을 가지는 키 값을 반환
min(딕셔너리, key=딕셔너리.get)
- 딕셔너리에서 키 값을 제거
del 딕셔너리[키 값]
- 키만 정렬
sort = sorted(map)
- 원소 값 기준으로 정렬
sort = sorted(map.items(), key = lambda x: x[1], reverse=True) # x[1]이 key의 value 값 의미
- 원소 값이 특정 조건을 모두 충족하는지 점검
all(x >= 0 for x in map.values())
Set
- 빈 자료형 선언
speak = set()
- 원소 추가
speak.add(원소)
- 원소 삭제
speak.remove(원소)
진수
- 10진법 → 2진법
format(숫자, 'b')
- 2진법 → 10진법
int(2진법 문자열, 2)
기타
- 재귀 한도 초과 방지 코드
import sys
sys.setrecursionlimit(200000)
- 순열
import itertools
for permutation in list(itertools.permutations(w, n)):
- 조합
import itertools
for combination in list(itertools.combinations(w, n)):