0. 서론
C언어를 배우는 사람들에게 C언어의 어떤것이 어렵냐고 물어보면 열에 아홉은 포인터가 어렵다고 합니다.
1563번 문제: 개근상 문제를 여러가지 점화식으로 풀어봅시다.
출결사항은 출석, 지각, 결석으로 총 3가지가 있습니다.
개근상을 받을 수 없는 사람은 지각을 두 번 이상 했거나, 결석을 세 번 연속으로 한 사람입니다.
Mac 에서 Atom 으로 환경을 구성해 사용하고 있습니다. 다음의 패키지를 받으면 유용합니다.
linter-gcc : gcc 린터입니다. 적당한 규칙을 적용하고 있습니다. atom 에서 만든 린터의 경우 디폴트로 너무 강한 규칙을 적용하고 있어서 사용하기 좀 불편하더라고요. 주소 : https://atom.io/packages/linter-gcc
terminal-plus : 터미널을 아톰 하단패널에서 사용할수 있습니다. 꽤나 편리합니다. 다만 무한로그가 찍히면 아톰이 뻗어버립니다. ㅡㅡㅋ 주소 : https://atom.io/packages/terminal-plus
정수 $a$를 $m$으로 나눈 나머지 연산의 곱셈 역원은 $a \times a^{-1} \equiv 1 \pmod m$을 만족하는 $a^{-1}$을 말합니다.
즉, $a^{-1} \equiv x \pmod m$을 만족하는 $x$를 말합니다.
역원은 $a$와 $m$이 서로소인 경우에만 존재합니다.
피보나치 수는 다음과 같이 정의되는 수열입니다.
피보나치 수를 조금 써보면, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 와 같습니다.
세 점 P1(x1, y1), P2(x2, y2), P3(x3, y3)가 있을 떄, 점 3개를 이은 선분은 어떤 방향성을 나타내게 될까요? 11758번 문제: CCW
가능한 경우의 수는 총 3가지가 있습니다. 반시계 방향, 시계 방향, 일직선. 시계 방향을 -1, 일직선을 0, 반시계 방향을 1이라고 했을 때, P1은 검정색, P2는 초록색, P3을 파란색으로 나타내면 아래 그림과 같습니다.
가장 가까운 두 점 찾기 문제는 2차원 평면 위에 점 N개가 있을 때, 거리가 가장 가까운 두 점을 찾는 문제입니다. (2261번 문제: 가장 가까운 두 점)
N이 작은 경우에는 모든 경우를 다해보는 방식을 이용해서 구현할 수 있습니다.
#include <cstdio>
int x[100000];
int y[100000];
int dist(int x1, int y1, int x2, int y2) {
return (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);
}
int main() {
int n;
scanf("%d",&n);
for (int i=0; i<n; i++) {
scanf("%d %d",&x[i],&y[i]);
}
int ans = -1;
for (int i=0; i<n-1; i++) {
for (int j=i+1; j<n; j++) {
int d = dist(x[i],y[i],x[j],y[j]);
if (ans == -1 || ans > d) {
ans = d;
}
}
}
printf("%d\n",ans);
return 0;
}
일기형식으로 글을 써보겠습니다.
시간은 일요일 오후 6시.
아침부터 알고리즘 강의를 10~1, 2~5시를 하고나서 저녁도 못먹고 참가하는 대회이고, 졸려 죽겠어서 참가할지 말지 고민을 엄청많이 했지만, 일단 참가를 하기로 결정했다.