안녕하세요?

오늘도 여러분께 지난번 강의에 이어 숏코딩에 관하여 알려드리겠습니다!

오늘은 함수를 포함한 코드의 숏코딩과 여러가지 다른 종류들을 알아보는 시간을 가지도록 하겠습니다.

먼저 문제는 코드업의 2723번 입니다!!

5각수 문제입니다.

5각수에 대하여 모르시는 분들은 인터넷에 찾아보면 됩니다(점화식도 나와있더군요 ㅋㅋ)

 

<모범소스>

 

#include 
int main(){
long long int i;
scanf("%lld",&i);
i+=1;
long long int j = i*3 -1;
long long int k = j * i;
long long int s = k/2;
printf("%lld",s%100000004);
return 0;
}

 

<수정 소스1>

 

main(){long long int i;scanf("%lld",&i);i+=1;printf("%lld",(((i*3-1)*i)/2)%100000004);}

 

한번에 많이 줄여봤습니다. 

j,s라는 변수를 없에고 하나의 식으로 만든 다음 엔터와 공백을 지웠습니다.

 

<수정 소스2>

 

main(){long long i;scanf("%ld",&i);i+=1;printf("%ld",(((i*3-1)*i)/2)%100000004);}

 

long long int 말고 걍 long long으로 변수 선언했습니다.(바이트 수 줄어듭니다!)(무려 6바이트나!!)

 

<수정 소스 3>

 

main(){long long i;scanf("%ld",&i);i+=1;printf("%ld",((i*i*3-i)/2)%100000004);}

 

점화식을 전개했더니 바이트가 줄어들더군요 ㅋㅋ(저도 어쩌다 알았습니다)

 

<수정 소스 4>

 

main(long i){scanf("%d",&i);i+=1;printf("%d",((i*i*3-i)/2)%100000004);}

 

long long 이 아닌 long으로 해도 되더군요. 

 

-->저는 아직 초보라서 여기까지밖에 못 줄이겠더군요. 마지막 코드는 72 바이트인데...

60 바이트가 있네요... ㅠㅠ 

 

 

더 줄이는 방법을 알아내면 추가적으로 작성하겠습니다.

(참고로 모든 소스에 오타 있습니다)

'C언어 공부' 카테고리의 다른 글

배열  (1) 2020.03.26
반복문  (0) 2020.03.26
숏코딩(코드로 골프하기)(입문,기초)  (2) 2020.03.02
switch~case 문  (0) 2020.03.01
제어문(if, else)  (3) 2020.02.26

+ Recent posts