본문 바로가기
정보

PS용 C++ 잡기술 모음 (숏코딩)

by 땅왕 2024. 8. 20.

당신의 코딩 속도를 향상 시킬 C++ 잡기술 모음이다. 좀 실용적인 것만. 생각나는 대로 추가할 예정

 

문법은 모두 gcc c++20 기준이다. 

 


입출력 시간 단축 코드 짧게 쓰기

cin.tie(0)->sync_with_stdio(0);

 

보통 쓰는 코드 보다 조금 짧게 짤 수 있다

 


값이 -1이 아닌지 체크

if(~a)

~연산은 모든 비트를 반전시킴 -1은 모든 비트가 1이기 때문에 ~연산을 하면 0이 된다.

즉 ~a은 a가 -1일 때는 false 아닐 때는 true가 된다.

if(a!=-1)

이거랑 똑같이 쓸 수 있고 짧아서 좋다.

if(!~a)

반대는 이렇게


배열 크기를 변수로 설정하기(가변길이 배열)

int size;cin >> size;
int arr[size];

보통 안 된다고 알고 있지만 gcc에선 된다.


쉼표로 한 줄 코딩

for(int i=0;i<n;i++)
        a++,b+=i;

for문이나 if에서 연산 여러 개 할 때 중괄호를 열지 않고 쉼표를 써서 한 줄에 쓸 수 있다.

 


for문 안에서 쓸 변수 초기식에서 선언하기

int sum = 0;
for(int i=0,a;i<n;i++)
    cin>>a,sum+=a;

sum 구하는 예제로 보면 이런 식으로 쓸 수 있다. 그래프 간선 같은 거 입력받을 때 쓰면 정말 좋다.

for(int i=0,u,v;i<m;i++)
        cin>>u>>v,adj[u].push_back(v),adj[v].push_back(u);

 


공백 없이 입력되는 데이터 입력받기

947586312

이런 데이터 나눠서 입력 받고 싶을 때 char로 입력 받으면 된다. char는 별도의 처리를 안 해줘도 한 글자씩 받아진다.

char ch;
for(int i=0;i<n;i++)
    cin>>ch,arr[i]=ch-'0';

이런 식으로 일단 char로 입력 받고 원하는 대로 변환하면 된다.

 


내림차순 정렬 

sort(vec.rbegin(),vec.rend());

이런식으로 내림차순 정렬을 짧게 쓸 수 있다.