알고리즘을 풀기 위한 꿀팁 모음!!
1. 일렬로 배열 출력
print("".join(배열))
- 배열을 문자열 형식으로 일렬로 출력
2. 문자열 확인
if '3' in str(i) + str(j) + str(k):
count += 1
- 위 코드는 i, j, k를 문자열화 시켜서 하나로 합친 뒤, 그 안에 '3'이 하나라도 있으면 count에 1을 더하는 것이다.
3. int형 입력 여러개 받기
data = list(map(int, input().split()))
- 리스트 형식으로 받기
n, m = map(int, input().split())
- 다른 변수에 각각 받기
n = int(input())
array = [0] * 10_000
for i in range(n):
array[i] = int(input())
- 백준에서 여러줄 입력받을 때 사용
4. 배열 정렬하기
arr.sort()
- sort() 함수 사용, arr의 내용이 자동으로 정렬됨(오름차순)
arr.sort(reverse=True)
- 거꾸로 정렬(내림차순)
5. 이진 탐색
from bisect import bisect_left, bisect_right
bisect_left(a, x)
- 정렬된 순서를 유지하면서 배열 a에 x를 삽입할 가장 왼쪽의 인덱스를 반환
- C++ 에서 lower_bound()와 동일
bisect_right(a, x)
- 정렬된 순서를 유지하면서 배열 a에 x를 삽입할 가장 오른쪽의 인덱스를 반환
- C++ 에서 upper_bound()와 동일
6. 2차원 배열 만들기
arr = [[0] * M for _ in range(N)]
- 행이 M개, 열이 N개인 2차원 배열이 만들어짐(내용은 전부 0)
arr = [[] for _ in range(n)]
- 내용이 없는 n개 행을 가진 2차원 배열
arr = []
for N in range(N):
arr.append(list(map(int, input().split())))
- 띄어쓰기 되어 있는 문자열을 2차원 배열로 입력 받을 때
arr = []
for N in range(N):
arr.append(list(map(int, input())))
- 띄어쓰기가 안 되어있는 입력을 받을 때 2차원 배열을 만드는 법
- input() 뒤에 split()만 빼줘도 된다.
n, m = map(int, input().split()) # 행과 열
array = list(map(int, input().split())) # 일렬로 입력
dp = []
index = 0
for i in range(n):
dp.append(array[index:index+m])
index += m
- 2차원 배열을 일렬로 입력받을 때 2차원으로 만드는 방법
- 슬라이싱을 이용한다.
7. 알파벳인지 숫자인지 확인하기
A = "1234"
B = "A23BD"
C = "ABD"
print(A.isalpha()) # False
print(A.isdigit()) # True
print(B.isalpha()) # False
print(B.isdigit()) # False
print(C.isalpha()) # True
print(C.isdigit()) # False
- isalpha() 와 isdigit() 사용
8. 리스트.count()
num = list형자료.count(0)
- 0의 개수를 리턴해준다.
9. 정규 자료형 확인
문자열.isalnum()
- 문자, 숫자로 구성되어 있으면 true, 아니면 false