코딩/기타

숏코딩 방법

acmi 2025. 1. 5. 22:08

이 글에서는 c, c++에서 사용할 수 있는 숏코딩 방법을 설명한다. 하지만 다른 언어에서도 일부 방법을 사용할 수 있을 것이라 생각한다.

 

1. 변수 이름 바꾸기, 상수 다른 방식으로 표현하기

변수의 이름을 짧게 바꾸면 가독성이 떨어질 수 있지만 코드의 길이를 (변수의 이름이 줄어든 길이)*(변수가 사용되는 횟수)만큼 줄일 수 있다. 상수는 1000000007을 1e9+7로 표현하거나 1048576(2의 20제곱)을 1<<20으로 표현하여 길이를 줄일 수 있고 이는 경우에 따라 가독성을 향상시키기도 한다. 또한 특정 상수가 반복되어 사용될 경우 변수에 상수를 저장해 사용할 수도 있다.

 

2. 반복문

반복문에서 a번 반복해야할 경우 for(;a--;)또는 for(i=-1;++i<a;)을 사용할 수 있다. 또한 반복문을 재귀함수로 바꾸었을 때 코드가 짧아지는 경우도 있다(길어질 수도 있다). 자료구조에서는 vector<int> v; for(int a:v)와 같이 사용할 수 있다. 다차원 배열을 사용할 때 다음과 같이 1차원 배열로 바꾸어서 사용할 수 있다:

int a[10][10]; for(i=0;i<10;i++)for(j=0;j<10;j++)a[i][j]=i+j;를

int a[100]; for(i=0;i<100;i++)a[i]=(i/10)+(i%10);으로 바꿀 수 있다.

입력받는 횟수가 중요하지 않은 경우 for(;~scanf("%d",&a);)으로 입력받을 수 있다. 

다음과 같이 반복문에서 줄 수를 줄여서 중괄호를 생략할 수 있다:

for(i=0;i<a;i++){scanf("%d",&b[i]);printf("%d",b[i]);}를

for(i=0;i<a;printf("%d",b[i++]))scanf("%d",&b[i]);으로 바꿀 수 있다.

 

3. 그 외

long은 windows를 제외한 대부분의 운영체제에서 long long과 같은 범위를 갖는다.

main함수에서 리턴을 하지 않아도 된다.

반복되는 부분이 있을 경우  #define을 이용할 수 있다.

삼항연산자를 적절히 사용하여 코드를 줄일 수 있다.

입력값이 불필요한 경우 gets함수를 이용할 수 있고, 개행문자를 출력하는 대신 puts("");을 이용할 수 있다.

a가 1일 때 YES, 0일 때 NO를 출력해야 하는 경우 puts(a?"YES":"NO");로 출력할 수 있다.

c++에서 using namespace std;대신 std::을 사용할 때 코드가 줄어드는 경우가 있다.

c에서 min함수는 없지만 fmin함수를 사용할 수 있다(삼항연산자를 이용하는 것이 더 짧을 수도 있다).

c에서 자료형이 int인 변수는 int를 쓰지 않아도 된다.  

main함수에 매개변수로 변수를 정의할 수 있고, 이를 이용해 c에서 변수의 자료형이 int인 경우 코드를 약간 줄일 수 있다.

bool연산자를 비트연산자로 대체하면 코드를 약간 줄일 수 있다.