
var a,b,c,d,e,f,g,i:real;beginreadln(a,b);readln(c,d);read(e,f);if a=c then g:=1e9 else g:=(b-d)/(a-c);if c=e then i:=1e9 else i:=(d-f)/(c-e);if g=i then write('WHERE IS MY CHICKEN?') else write('WINNER WINNER CHICKEN DINNER!');end. 풀이 : 기울기 구하기 0. 변수는 실수형으로 합니다.1. y값의 변화 / x값의 변화, 즉 기울기를 1번-2번, 2번-3번 : 총 2개의 기울기를 구합니다.2. 기울기를 구하는 과정에서 x값이 동일하면 에러가 발생하므로 (0으로 나눌수 없으니 예외처리를 합니다. 위의 코드에선 x값이 같은 경우..
var a,b,c,d,e,f,g,h,w,x,y,z:real;beginreadln(a,b);readln(c,d);readln(e,f);read(g,h);x:=sqrt(sqr(c-e)+sqr(d-f));y:=sqrt(sqr(c-g)+sqr(d-h));z:=sqrt(sqr(e-g)+sqr(f-h));w:=sqrt(sqr(a-c)+sqr(b-d))+z;if xc then w:=c;c:=sqrt(sqr(a-g)+sqr(b-h))+x;if yc then w:=c;writeln(trunc(w));end.https://www.acmicpc.net/problem/17286 풀이 : 피타고라스의 정리를 이용한 거리 계산 0. 변수 type은 실수형으로 합니다.1. 사람이 3명이므로 사람간의 거리는 총 3개가 나옵니다...
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
var a:real;begin read(a);write(trunc(a));end. 1. 실수형으로 입력을 받는다.2. read로 읽는다. 하나만 입력받기에 굳이 readln을 할 필요는 없다.3. write로 출력한다. 문제에서 소수점을 내림한 것을 출력하라고 하므로 trunc () 을 사용한다. trunc() ex) 123.23233 -> 123 -32.4334 -> -32 말 그대로 소수점만을 제거하낟. write(1.2323 : 0 : 3) 이렇게 특정 소수점만 출력하도록 하는 출력 형식이 존재하나 이것은 알아서 반올림을 해버린다. ex) 2.7:0:0 : 2.7 에서 소수점을 출력하지 않는다. (여기서 소수점에 대한 반올림이 일어난다) 결과는 3 으로 나온다. 고로 tru..

#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; // ..
var n,m,i,a:int64;begina:=1;readln(n,m);if n 풀이 : 모듈러 연산 모듈러 연산은 (산술) 분배법칙이 성립합니다. (A*B*C)%M ->( (A%M)*(B%M)*(C%M) ) % M 이런식으로 성립합니다. 그러나 범위가 크기 때문에 10^18까지 하기엔 무리가 있습니다.그렇지만 n >= m 인 경우 n!에는 m이 존재하므로 m 은 n!의 약수임을 알 수 있으며 이는 (n>=m) n! % m = 0 이란 의미입니다. 문제에서 주어진 2(10^7-1)! 까지는 반복적으로 나머지 연산을 해도 시간안에 처리가 가능합니다.
- Total
- Today
- Yesterday
- 오프라인 쿼리
- 세그먼트 트리
- 브루트포스
- 최대공약수
- union
- 그래프
- find
- 기하학
- 1835번
- DFS
- 그리디
- BFS
- Lazy Propagation
- PASCAL
- 누적합
- DP
- C++
- Krustal
- 백준
- 덱
- C언어
- 1835
- 누적 합
- 정렬
- 플로이드
- XOR
- 스택
- Segment Tree
- java
- 최소 스패닝 트리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |