포인터 & 수학

최연재·2022년 7월 10일
0

Algorithm

목록 보기
3/4
  • 포인터
  • 수학

1. 포인터

1. 포인터

  • 주소연산자 & \to &변수로 사용 \to 주소값 반환

  • 참조 연산자 * \to *포인터의 이름, *주소로 사용 \to 포인터에 저장된 주소에 저장되어 있는 값을 반환

  • 포인터를 이용하여 값을 꺼내는 방법 두 가지
    (1) (pointer_name)->(variable_name)
    (2) (*pointer_name).variable_name

2. 이터레이터와 포인터

  • 이터레이터
    (1) 컨테이너(배열 등)의 메모리 주소를 가리키는 데 사용되며 주소값을 바로 반환하지 않는 포인터의 일종(begin()과 end()를 많이 씀)
    (2) 주소값을 바로 반환하지 않기 때문에 주소값을 출력하려면 &*를 통해 출력해야 함
cout << v.begin() << endl; // 에러
cout << &*(v.begin()) << endl; // 주소값 출력

3. call by reference & call by value

  • 어떠한 값을 함수로 넘겨서 변하게 만들고 싶을 때는 주소값을 넘겨야 함
  • 그저 값만 넘기면 안됨!

4. 배열과 포인터

  • 배열의 이름은 배열의 주소값의 첫 번째 시작 주소를 가르킨다.

2. 수학

1. 순열과 조합

  1. 순열(permutation)
  • 순서가 정해진 임의의 집합을 다른 순서로 섞는 연산
  1. 조합(combination)
  • 순서가 없음
  • 몇 명을 뽑아서 갈 것인가를 쓸 때 사용

2. 정수론

  1. 최대공약수(gcd)와 최소공배수(lcm)
int gcd(int a, int b){
	if(a == 0)
		return b;
		
	return gcd(b % a, a);
}

int lcm(int a, int b){
	return (a*b) / gcd(a, b);
}
  1. 모듈러 연산
    (1) a ≡ b mod n과 b ≡ c mod n 은 a ≡ c mod n 을 의미
    (2) [(a mod n)+(b mod n)] mod n = (a+b) mod n
    (3) [(a mod n)-(b mod n)] mod n = (a-b) mod n
    (4) [(a mod n)*(b mod n)] mod n = (a*b) mod n

  2. 에라토스테네스의 채

  • 소수가 아닌 값들에 대한 불리언 배열을 만들어 소수만을 걸러낼 수 있는 방법
  1. 등차수열의 합
  • 등차수열의 합 = n(n+1) / 2

이 글은 큰돌님의 '10주완성 C++코딩테스트 | 알고리즘 IT취업'을 수강하고 정리한 내용입니다.

profile
가보자고

0개의 댓글