article thumbnail image
Published 2020. 7. 11. 16:59

1. C언어 연산자

  1.1 산술 연산자

: +, -, *, /, %

 

  1.2 관계 연산자

: ==, !=, >, <, >=, <=

 

  1.3 논리 연산자

: &&, ||, !

 

  1.4 Bitwise 연산자

①shift 연산자 : <<, >>

ex)

    i << j : i의 이진수에서 j만큼 비트를 왼쪽으로 옮긴다.

    i >> j : i의 이진수에서 j만큼 비트를 오른쪽으로 옮긴다.

 

*bitwise shift 연산자는 다른 산술 연산자보다 우선순위가 낮다.

 

②이진 연산자 : &, |, ^, ~

ex)

    a & b : 이진수 표현에서 각 자리가 둘 다 1이면 1, 나머지는 0이다.

    a | b : 이진수 표현에서 각 자리가 둘 다 0이면 0, 나머지는 1이다.

    a ^ b : 이진수 표현에서 각 자리가 다르면 1, 같으면 0이다.

    ~a : a의 이진법 표현에서 0과 1을 바꾼 값이다.

 

  1.5 대입 연산자(Assignment Operator)

①단순 대입 연산자(Simple Assignment) : =(변수에 값을 저장할 때 사용)

②복합 대입 연산자(Compound Assignment) : +=, -=, *=, /=, %=, &=, |=, ^=(변수의 값을 업데이트 하는 연산자)

2. 연산자의 우선순위

연산자 우선순위 같은 우선순위의 연산자가 둘 이상 있을 때
+, -(Unary) 가장 높음 오른쪽부터 연산
*, /, % 보통 왼쪽부터 연산
+, - 가장 낮음 왼쪽부터 연산

3. 2의 보수

이진법 표현의 수에서 0과 1을 바꾼 후 1을 더한 수다.
ex) 3=11(2) → 11111111 11111111 11111111 11111101 

4. 함수

  4.1 함수의 정의

[반환 값 타입] [함수명] ([타입] [매개변수], ...){

    변수 선언

    각종 statement들

    ...

    return 값;

}

 

  4.2 함수의 사용

함수명을 먼저 쓰고 괄호안에 인자를 넣는다.

인자의 개수는 함수의 정의에 사용된 매개변수의 개수와 일치하고 자료형이 같아야 한다.

 

  4.3 함수의 선언

[반환 값 타입] [함수명] ([타입] [매개변수], [타입] [매개변수], ...);

[반환 값 타입] [함수명] ([타입], [타입], ...);

*main함수 뒤에 함수를 정의하고, main함수 앞에 선언할 수 있다.

 

  4.4 인자

①call by value

인자를 사용할 때 값이 복사되어 넘어가므로 함수 안에서 인자의 값이 바뀌어도 변수 값은 변하지 않는다.

 

②reference by value

인자가 변수의 주소 값을 참조하므로 함수 안에서 참조 연산자로 인자를 수정하면 변수 값도 수정된다.

 

  4.5 return문

return [수식];

 

반환 값의 타입이 void가 아닌 함수는 반드시 return문으로 끝내야 한다.

반환 값이 void로 정의된 함수는 return이 필요없다.

 

  4.6 재귀함수

함수 안에서 자기 자신 함수를 부르는 것이다.

ex)

    #include <stdio.h>

    int fact(int n){

        if(n==1)    return 1;

        else           return n*fact(n-1);

    }

    int main(){

        printf("5! = %d\n", fact(5));

        return 0;

    }


SWEA 2043

서랍의 비밀번호가 생각이 나지 않는다.
비밀번호 P는 000부터 999까지 번호 중의 하나이다.
주어지는 번호 K부터 1씩 증가하며 비밀번호를 확인해 볼 생각이다.
예를 들어 비밀번호 P가 123 이고 주어지는 번호 K가 100 일 때, 100부터 123까지 24번 확인하여 비밀번호를 맞출 수 있다.
P와 K가 주어지면 K부터 시작하여 몇 번 만에 P를 맞출 수 있는지 알아보자.
[입력]
입력으로 P와 K가 빈 칸을 사이로 주어진다.
[출력]
몇 번 만에 비밀번호를 맞출 수 있는지 출력한다.

SWEA 2043
SWEA 2043 결과

 

'알고리즘' 카테고리의 다른 글

[SWEA] 10726/8931  (0) 2020.10.02
[SWEA] 9940/10032  (0) 2020.09.24
[SWEA] 10570/10200  (0) 2020.09.18
C정리 3주차  (0) 2020.07.11
C정리 1주차  (0) 2020.07.06
복사했습니다!