#include #include int cmp(const void*a,const void*b) {return(*(int*)a-*(int*)b);}int main(void) { int n,k,i,x,y; scanf("%d %d",&n,&k); int a[n]; for(i=0;i0) a[i]=y; else{a[i]=1e9;--k;} } qsort(a,n,4,cmp); printf("%d",(k>0)?a[k-1]:0);} 풀이 : 정렬 정렬은 stdlib.h 에 있는 qsort 을 이용하였습니다. qsort(정렬할 배열의 주소값, 요소의 개수, 배열 요소의 자료형의 크기, 비교를 위한 함수의 주소 (함수의 이름이 함수의 주소) 비교할 때 사용하는 함수의 기본 형태는 (비교하는 요소의 type) 함수의 이름 (..

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(..
char s[2]={}, a[4]="AKAR"; //s는 숫자입력받는거, a는 문자열 저장int n,i; //n은 s를 int형으로 바꾼것을 저장, i는 for문__libc_start_main(){ read(0,s,2); //입력 n=s[0]-'0'; //처음 데이터 int 변환 if(s[1]>='0') {n*=10;n+=s[1]-'0';} //만약 10이상의 수라면, 기존데이터 * 10 + 두번째 데이터 int 변환 for(i=0;i 풀이 : 구현 https://www.acmicpc.net/problem/32652

#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!=..
- Total
- Today
- Yesterday
- DFS
- PASCAL
- C++
- 1835
- XOR
- Krustal
- 그래프
- BFS
- 스택
- 오프라인 쿼리
- DP
- 기하학
- 정렬
- Lazy Propagation
- 그리디
- 백준
- C언어
- Segment Tree
- 세그먼트 트리
- 누적 합
- find
- 브루트포스
- java
- 누적합
- 덱
- union
- 최대공약수
- 1835번
- 최소 스패닝 트리
- 플로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |