vector inner_product
int result = inner_product(v1.begin(), v1.end(), v2.begin(), 0);
v2의 size는 v1과 같거나 v2가 더 커야함
inner_product의 기능은
v1[0]*v2[0] + v1[1]*v2[1] * ... + v1[10]*v2[10]
처럼 같은 위치의 값들을 곱한 후 그 값들을 다 더해주는 것


내림차순 정렬은 아래처럼도 할 수 있음
sort(B.rbegin(), B.rend());


(a+b)%n == ((a%n)+(b%n))%n


STL은 신이고 무적이다...
아무리 동적할당으로 new delete 해가면서 for문 돌리고 다 해봤자
이미 고수들이 만들어둔 STL 갖다 쓰는게 더 빠르다...


유클리드 호제법으로 gcd 구하기
기본적으로 a>b으로 써야 함

 


1) 재귀적으로
int GCD(int a, int b)
{
if(b==0) return a;
else return GCD(b, a%b);
}

2) while문으로
int GCD(int a, int b)
{
while(1)
{
int c = a%b;
if(c==0) return b;
a = b;
b = c;
}
}
혹은
int GCD(int a, int b)
{
int c;
while (b != 0)
{
c = a % b;
a = b;
b = c;
}
return a;
}



프로그래머스 2단계 문제들은 대부분 정수의 범위가 넘어가게 만드는 테스트케이스가 있는 듯
int로 부족하지 않은지 항상 확인해가면서 해야 함