
int main() { int n,m,i,j,x=0; //변수 scanf("%d",&n); char d[2][n]; //삼각형의 상태를 저장하는 배열 for(i=0;i0 && d[0][i-1]) --x; //왼쪽 if(i0 && d[1][i-1]) --x; //왼쪽 if(i 풀이 : 기하학? 삼각형의 노란색 모서리의 개수 구하는 방법 0. 노란색 모서리의 총합 = 검은색 삼각형의 개수 * 31. 빨간색 짝수번의 삼각형은 최대 3개의 다른 삼각형과 접하고 있으며 빨간색 홀수번의 삼각형은 2개의 다른 삼각형과 접하고 있습니다.2. 짝수번의 삼각형 아래 (파란색 0번줄 기준, 파란색 1번줄 기준은 위), 왼쪽 오른쪽에 검은색 삼각형이 있는지를 확인하고, 접하고 있는 검은 삼각형의 개수 만큼 노란색 모..
int main() { //변수 int n,x,y,X,Y,i,j,m,a=0; char d[1001][1001]={}; //입력 scanf("%d",&n); for(i=1;i((x-X)*(x-X)+(y-Y)*(y-Y))); //거리가 작다... else { //두 점간의 거리는 5 이상이다. //교수와 성규를 둘러싼 직사각형에 학생이 몇명 있는지를 계산하기위한 준비 if(X2) a=1; //학생이 3명 이상이라면 } printf("%d",a); //출력} 풀이 : 구현, 두 점간의 거리 구하기 0) 입력0.1) 1을 입력 받으면 d[][] 에 1로 저장0.2) 2을 입력 받으면 이때의 i,j 값을 x,y 에 저장 (성규)0.3) 5을 입력 받으면 이때의 i,j 값을 X,Y에 저장..
int main() { //0번 int r,c,n,d[100001][4]={},x,y,z; long long A=0,B=0,C; scanf("%d %d",&r,&c); scanf("%d",&n); //1번 while(n--) { scanf("%d %d %d",&x,&y,&z); if(!d[x][0]) { //1.1번 d[x][0]=d[x][2]=y; d[x][1]=d[x][3]=z; } else { //1.2번 if(d[x][0]>y) d[x][0]=y; if(d[x][1]>z) d[x][1]=z; if(d[x][2]A) { //만약 기존에 있던 것보다 더 큰 조각이라면 A=C; //크기 B=i; //번호 } } } printf("%lld %lld",B..
int main() { long long n,i,j,k,x=0,y,c,d; double r,a[101],b[101]; scanf("%lld %lf",&n,&r); r=r*r; for(i=1;i 풀이 : 기하학, 브루트 포스 1. 입력을 받습니다.2. 브루트 포스 : -100~100 x, y 쌍을 한개씩 전부 시도 할 것입니다. 이중 반복문으로 작성합니다.3. 기하학 : 문제에서 주어신 방정식 (좌표평면에서 두 점 사이의 거리) 을 이용하여 R^2 보다 크면 원에 들어 있지 않는 것으로 판단합니다.4. 기존보다 원에 들어있는 쌀알의 개수가 많다면 (초기값은 0) 이 때의 x,y 값을 변수에 따로 저장해 둡니다.5. 반복이 끝나면 4에서 얻은 x, y 의 값을 출력합니다.
char a[12]={}; //입력을 받기 위한 문자 배열int A,B;__libc_start_main(){ A=B=0; //점수를 담기위한 변수의 초기화 read(0,a,12); //12만큼 받는 이유는 입력 버퍼에서 '\n'까지 처리하기 위함, (물론 a에는 '\n'이 들어갈 자리가 없습니다, 버려집니다) A=(a[0]-48)*13+(a[2]-48)*7+(a[4]-48)*5+(a[6]-48)*3+(a[8]-48)*3+(a[10]-48)*2; //첫번째 줄 처리 read(0,a,11); //두번째 줄 입력 B=(a[0]-48)*13+(a[2]-48)*7+(a[4]-48)*5+(a[6]-48)*3+(a[8]-48)*3+(a[10]-48)*2+2; //두번째 줄 처리 if(..

#include #include int ans = 0; //각 테스트 케이스마다 자판을 몇 번 누르는지를 담는 변수typedef struct Trie { //트라이를 구성할 구조체 struct Trie *next, *child; //각 노드마다 자신의 옆과, 자신의 자식을 가리킴 char data; //문자 int cnt; //몇 개? (중복)}Trie;Trie * make(Trie * root, char c) { //트라이 만들기 for(Trie*p=root->child;p!=NULL;p=p->next) { //기존에 있는 것인지 확인하기 if(c == p->data) { //비교는 문자를 이용하여 p->cnt++; //있다면 중복이므로 1을 증가 return p; //이 노드의 주소값을 반환..

#include #include #include typedef struct Trie { char data[9]; //단어의 길이는 1~8까지다. (널문자 공간 1 비어놓아야 한다) struct Trie * next; struct Trie * child;}Trie;Trie * insert(Trie * root, char str[]) { Trie * newNode = malloc(sizeof(Trie)); newNode->next = NULL; newNode->child = NULL; strcpy(newNode->data, str); Trie * p = root->child; Trie * bp = NULL; // before p if(p!=..

#include #include #include typedef struct Trie { char data[16]; struct Trie * next; struct Trie * child;}Trie;Trie * insert(Trie * root, char str[]) { //Trie 삽입 Trie * newNode = malloc(sizeof(Trie)); //새로운 노드 만들고 newNode->next = NULL; //초기화 newNode->child = NULL; //초기화 strcpy(newNode->data, str); //문자열 복사 Trie * p = root->child; //루트의 자식 주소 복사 Trie * bp = NULL; // ..

#include #include long long tree[600000] = {}, start[200001]={}, end[200001]={}, dif[200001] = {}, ETT=0;char v[200001] = {};typedef struct list{ //단방향 리스트 struct list * next; long long val;}list;void insert(int x, int y, list vec[]) { //리스트 삽입, x을 기준으로 봅니다. list * newNode = (list*) malloc(sizeof(list)); newNode->val = y; newNode->next = vec[x].next; vec[x].next = newNode;}void dfs(int x, int y,..
- Total
- Today
- Yesterday
- 1835번
- 누적합
- Segment Tree
- 덱
- XOR
- 브루트포스
- PASCAL
- DP
- 백준
- 1835
- 최대공약수
- 기하학
- 세그먼트 트리
- 오프라인 쿼리
- 정렬
- Lazy Propagation
- 누적 합
- find
- C++
- union
- java
- 플로이드
- 그래프
- DFS
- C언어
- Krustal
- BFS
- 그리디
- 최소 스패닝 트리
- 스택
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |