안녕하세요?

오늘은 반복문에 대하여 알아보겠습니다.

반복문은 코딩에서 가장 중요한 요소라고 해도 과언이 아닐 정도로 중요합니다.

그럼 그리도 중요한 반복문에 대하여 알아보겠습니다.

 

· 반복문 1(for)

 

반복문에는 총 3(4가지라고도 할 수 있다. 뒤에 설명할 goto 문 때문이다)가지가 있습니다.

차근차근 알아보도록 하죠.

먼저 for문 이라는 반복문이 있습니다.(개인적으로 가장 선호하는 반복문입니다.)

for문을 만들려면 먼저 i 라는 변수를 만들어야 합니다.

이 i를 증가/감소 시켜서 반복을 시키는 형태입니다. 

예시를 보자면

 

for(i=0;i<100;i++)

{

    (sentence)

}

 

이렇게 되겠습니다.

여기서 반복을 몇번 하게 될까요?

정답은 100번 입니다.

왜냐하면 i가 0일 때부터 99일때까지 반복을 돌리기 때문에 0~99까지 수의 개수인 100이 되는 것입니다.

 

 

· 반복문 2(while)

 

2번째 반복문인 while 문을 알아보도록 하겠습니다.

while 문은 비교적 단순합니다.

i가 어떤 조건을 만족 할때까지 반복을 합니다.

예제를 보자면

 

while(i!=0)

{

    (sentence)

}

 

이 코드는 몇번을 반복하는지 모릅니다.(이거만 봐서는요)

하지만 i 가 0이 될때 까지 반복한다는 점만은 알 수 있습니다.

쉽죠?

 

· 반복문 3(do~while)

 

마지막으로 do~while 문입니다.

이 반복문은 while 문의 연속입니다.

전 솔직히 번거롭고 해서 가장 별로이고, 정말 잘 쓰지 않는 반복문이긴 한데 좀 쓰는 곳이 있기는 해서 알려 드립니다.

그냥 앞에 있던 while 문 안에 있었던 것을 do뒤에 놓은 다음 조건을 나중에 주는 것입니다.

예제를 보겠습니다.

 

do

{

    (sentence)

} while(i!=0)

 

확실히 while 문보다 쓸 것이 많다는 것을 알 수 있습니다.

설명은 위와 같습니다.

 

· 번외편(goto)

 

이 반복문은 정말 권장하지 않습니다.

이유는 이 글을 참고하세요

https://codeup.kr/classop.php?class_id=8855의 3번

 

그냥 statement 하나를 만들어 놓고 어떤 일을 수행한 다음 다시 그곳으로 돌아가는 반복문입니다.

자세히 설명하거나 예제를 두지는 않겠습니다.

설명을 원하시는 분들은 댓글에 남겨 주시면 새로 강의 작성하겠습니다.

 

 

이렇게 3(4)가지의 반복문에 관해서 알아보았습니다.

감사합니다.

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

C 언어 연습 IDE 추천  (4) 2020.03.27
배열  (1) 2020.03.26
숏코딩(2)(중급)  (3) 2020.03.05
숏코딩(코드로 골프하기)(입문,기초)  (2) 2020.03.02
switch~case 문  (0) 2020.03.01

안녕하세요?

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

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

먼저 문제는 코드업의 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

안녕하세요?

오늘은 숏코딩에 관하여 설명해 드리려고 합니다.

먼저, 숏코딩은 코드의 메모리 사용량과 바이트 수를 최대한으로 줄이는 프로그래밍 방법입니다.

숏코딩을 하려면 컴퓨터와 코딩에 관한 상당한 양의 지식이 필요합니다.

지금 여러분께 숏코딩을 빠르고 쉽게 할 수 있는 몇 가지 방법을 보여 드리겠습니다!^^

 

먼저, 이 코드를 볼까요?

 

<코드>

 

#include <stdio.h>

int main()

{

    printf("Hello!");

    return 0;

}

 

자, 간단한 출력문입니다.

Hello!를 출력하죠. 

이 코드를 최대한 짧게 만들어 보겠습니다.

 

1. #include <stdio.h> 와 return 0; 은 생략이 가능합니다. (C에서의 이야기 입니다.)

 

<수정된 코드1>

 

int main()

{

    printf("Hello!");

}

 

2. int 도 생략이 가능합니다.

 

<수정된 코드 2>

 

main()

{

    printf("Hello!");

}

 

3. 엔터와 공백을 모두 삭제해 보겠습니다.

 

<수정된 코드 3>

 

main(){printf("Hello!");}

 

4. 더 이상 줄일 곳이 없어 보입니다. 하지만 한 곳 더 줄일 곳이 있습니다. 바로 출력문!!!(중요)

 

<수정된 코드 4>

 

main(){puts("Hello!");}

 

5. 끝!

 

--> 여기서 puts 는 자동으로 엔터를 띄워줍니다. (여러므로 숏코딩에 유용한 출력문입니다)

 

**지금 제가 알려드린 방법으로는 지금 예시 코드와 같이 단순한 출력 코드 정도 밖에 바이트 수를 획기적으로 줄이지 못합니다. 다른 숏코딩 방법도 여러 가지 있습니다.(획기적인 알고리즘 등) 그런 방법은 다음 강의들에서 차례차례 알려 드리도록 하겠습니다. 

 

강의를 마치겠습니다. 

감사합니다!!

 

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

반복문  (0) 2020.03.26
숏코딩(2)(중급)  (3) 2020.03.05
switch~case 문  (0) 2020.03.01
제어문(if, else)  (3) 2020.02.26
논리, 형변환, 비트 연산자  (0) 2020.02.26

안녕하세요?

오늘은 또 다른 제어문인 switch~case 문에 관해서 알아보겠습니다!!

이 문법은 if문보다 조금 어렵습니다.

시작해 볼까요?

 

• switch~case 문

 

이 새로운 제어문은 조건이 아주 많을 떄 사용하는 문법입니다.

즉, switch 문으로 조건을 받으려는 문자를 선택한 후, case문으로 조건을 받는 것입니다.

그런데!

이 문법은 조건이 숫자, 또는 문자로 이루어져 있을 때문 가능합니다.

이게 무슨 뜻이냐고요? (걱정 마세요 여러분이 국어를 못하는게 아니라 제가 설명을 못하는 거에요)

그러니까 if문처럼 긴 조건을 줄 수 없다는 소리입니다.

예제를 보시면 쉽게 이해가 갈 꺼에요~

 

<예제>

 

​#include  <stdio.h>
int main()
{
       int x = 50, y = 2;
       char ch;
       switch(x*y){
       case 100 : ch = 'A'; break;
       case 200 : ch = 'B'; break;
       case 300 : ch = 'C'; break;
       default : ch = 'Z';
       }
       printf("%c \n", ch);
       return 0;

 

<실행 결과>

A

 

조건을 어떻게 주었는지 아시겠나요?

x*y 가 어떤 수인지를 간단하게 판별하는 조건 만 있습니다.

즉, case 뒤에 오는 것이 조건입니다.

그리고 여기서 default는 if 문의 else 와 비슷한 역할을 한다고 보면 됩니다.

이게 다에요~!

 

그럼 코드업에 있는 문제를 직접 풀도록 하겠습니다.

 

#include  <stdio.h>
int main()
{
    int a,b;
    int c;
    scanf("%d%d%d, &a, &c, &b");
    switch(c)
    {
        case '+' : printf("%d",a+b);
        case '-' : printf("%d",a-b);
        case '*' : printf("%d",a*b);
        case '/' : printf("%.2f",(float)a/b);
    } 
    return 0;
}

 

(문제를 알려주지 않았다는게 함정)

(잘 찾아서 알아서 풀어보세요~ 문제를 찾았어도 복붙하면 틀리는게 함정)

 

강의 들어 주셔서 감사합니다~!^^

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

숏코딩(2)(중급)  (3) 2020.03.05
숏코딩(코드로 골프하기)(입문,기초)  (2) 2020.03.02
제어문(if, else)  (3) 2020.02.26
논리, 형변환, 비트 연산자  (0) 2020.02.26
복합 대입 연산자, 관계 연산자  (4) 2020.02.08

안녕하세요?

오늘은 if 문에 관해서 배워 보도록 하겠습니다.

if문은 제어문 중 가장 흔하게 쓰이는 문법으로, 앞으로 정말, 정말, 정말, 정말!!!!! 많이 쓰이는 문법입니다.

(문제의 모범소스 보시면, 출력문 빼고는 거의다 이 문법이 들어가 있습니다. 안들어가면 치팅입니다.)

 

• if문!(중요)

 

시작해 볼까요?!

if문은 스크래치의 '만약~이면' 블록과 똑같은 역할을 합니다.

예를 들어 어떤 수가 짝수인지 홀수인지 판별하는 문제에 이 문법이 사용될 수 있습니다. 

한번 코드를 직접 짜 보겠습니다.

 

<코드>

#include <stdio.h>

int main()

{

       int a = 10;

       if(a%2==1){

              printf("even");

       }

       else

       {

              printf("odd");

       }

       return 0;

}

 

결과) even

 

이런 식으로 짤 수 있습니다.

그러니까 코드의 실행 구조는

a = 10이라고 컴퓨터가 인지

-> a를 2로 나눈 나머지가 0인지 확인

-> 맞으므로 even 출력 

이 되겠습니다.

 

쉽죠?

지금으로써는 else문에 조건을 줄 수 없습니다.

즉, if문 안에 있는 조건을 그냥 부정하는 것이 else문 이라는 것입니다.

이제, else if 문에 대하여 알아보겠습니다.

else if문은 그냥 

if문 뒤에 조건을 다는 것처럼 else if라고 써넣고 조건을 쓰시면 됩니다.

쉽죠? (사실 어려워요...처음배우면)

 

오늘 강의는 여기서 끝입니다!!

감사합니다!

 

(구독과 좋아요도....제발!ㅠㅠ)

+ Recent posts