알고리즘을 풀며 쌓아온 꿀팁 아닌 꿀팁을 정리하고자 한다.
1. (파이썬) 여러개의 변수 입력받기
# 여러개의 변수
a,b,c = map(int, input().split())
# 1 2 3
# 한줄로 입력받는 리스트
arr = list(map(int, input().split()))
# 1 2 3 4 5 6 7 8 9
# 여러줄을 입력받는 리스트
arr = [int(input()) for _ in range(n)]
# 1
# 2
# 3
# 4
# 2차원 배열
arr = [list(map(int, input().split())) for _ in range(n)]
# 1 2 3
# 4 5 6
# 7 8 9
2. (파이썬) 배열 초기화
# 1차원 배열
a = [0]*n
# 2차원 배열
a = [[0]*n for _ in range(n)]
# 3차원 배열
a = [[[0]*n for _ in range(n)] for i in range(n)]
3. (파이썬) 여러개의 테스트 케이스가 주어지는데 몇개인지 모를 때
try:
a,b = map(int, input().split())
# do something
except:
pass
# 1 2
# 3 4
# 5 6
4. (파이썬) 올바른 알고리즘인데 시간초과가 날때 입출력 최적화
import sys
input = sys.stdin.readline
a = input()
많은 입력이 들어올 때 써주면 시간초과가 나는 코드도 통과할 수 있다.
5. (파이썬) 각종 라이브러리
from queue import Queue, PriorityQueue # 큐, 우선순위 큐
from decimal import Decimal # 정밀한 소수계산
from bisect import bisect_left, bisect_right # 이분탐색 모듈
6. (C++) 여러개의 테스트케이스
int main(){
// 케이스 개수가 주어질 때
int T;
cin>>T;
while(T--){
// do something
}
// 케이스 개수가 안 주어질 때
int a,b;
while(cin>>a>>b){
// do something
}
}
7. (C++) 입출력속도 최적화 (4번의 C++버전)
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
endl보다 \n을 쓰면 속도가 빨라진다!
8. (파이썬) 리스트 출력
a = [1,2,3]
print(a)
# [1, 2, 3]
print(' ', end=' ')
# 1 2 3 # 3 뒤에 공백있음
print(*a)
# 1 2 3
9. (C++)숫자를 2진수로 바꿨을 때 자릿수 구하기
int n=0, x=0;
cin>>x;
for(n=1;x>>n;n++);
나는 보통 파이썬으로 ps를 하지만 시간초과가 나거나(추가시간 없음 문제) 특정 STL이 필요한 경우 C++을 사용하기도 한다.
유용한 사이트
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[알고리즘] Codeforces Round #768 (Div. 2) (0) | 2022.01.29 |
---|---|
[알고리즘] 이분탐색 (0) | 2021.12.23 |
[알고리즘] 모듈러 연산과 페르마의 소정리 (0) | 2021.12.02 |
[알고리즘] 피보나치 수열의 성질 (0) | 2021.12.02 |
[알고리즘] 분할 정복을 이용한 거듭제곱 (0) | 2021.12.02 |