
t = int(input())n = int(input())a = list(map(int,input().split()))a.sort()a = [abs(b-a) for a,b in zip(a,a[1:])]a.sort()print(sum(a[0:t-n])) 풀이 : 정렬1. 집의 좌표를 오름차순으로 정렬합니다 (내림차순도 상관없습니다)2. 각 집끼리의 차이를 (음의 정수가 아닌 정수로) 계산합니다. 만약 같은 좌표라면 결과는 0입니다3. 2에서 구한 차이들을 또 정렬합니다.4. 가장 큰 차이부터 (집중국의 개수 -1) 만큼 제거합니다.5. 4에서 남아있는 차이들의 합이 답입니다. 4에서 제거한다는 것은 위의 그림을 보면 새로운 집중국을 설치하는것으로 여길수 있습니다0 1 1 2 2 3 에서 (집중국 1개)0 ..
t = int(input())while t>0: t-=1 n,k = map(int,input().split()) a = list(map(int,input().split())) a.sort() l=0 r=n-1 c=0 d=0 e=2e8 while l0: c=0 e=0 c+=1 l+=1 r-=1 else: if abs(k-d)k: r-=1 print(c) 풀이 : 정렬, 두 포인터 1. 리스트로 입력받은것들을 담아논다음, 오름차순 정렬을 합니다2. 두 포인터(l,r)을 준비하고, ..
n = int(input())a=[]for _ in range(n): s = input() a.append(s)a.sort()i=0while i 풀이 : 정렬 1. 알파벳 오름차순 기준으로 리스트에 문자열을 넣어놓은 것을 정렬한다.2. 순차적으로 탐색하며 만약 자기 자신이 다른 문자열의 접두사가 될 수 있다면 이 문자열은 리스트에서 삭제한다.3. 위의 과정을 반복하다보면 모든 문자열을 탐색하게 된다.4. 리스트에 남아있는 문자열들의 개수가 정답이다.
#include #include int cmp(const void*a, const void*b) {return(*(int*)a-*(int*)b);}int main() { int n,i,x,y=0,z; scanf("%d",&n); int a[n],b[n]; for(i=0;i 풀이 : 정렬 0. x좌표 값과, y좌표 값을 각각 다른 배열에 저장합니다.1. 오름차순으로 정렬을 합니다.2. 같은 좌표가 연속적으로 2번나온다면, 두 점을 지나며 x 또는 y 축에 평행한 선 1개가 있음을 알 수 있습니다. (같은 좌표가 3개이상이더라도, 직선은 1개이므로 그 이후에 중복되는 값은 무시하면 됩니다)3. 직선의 개수를 출력합니다. 위 코드에서 z의 역할1 1 1 ... 이런 식으로 같은 좌표가 연속적으로 3개 이상이 ..
#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) 함수의 이름 (..

var x1,x2,x3,x4,y1,y2,y3,y4,w,h,a:int64;begina:=0;readln(x1,y1,x2,y2);readln(x3,y3,x4,y4);read(w,h);if (x2-x1>=w) then begin if (y3-y1>=h) or (y2-y4>=h) then a:=1;end;if (y2-y1>=h) then begin if (x3-x1>=w) or (x2-x4>=w) then a:=1;end;if a=0 then write('No') else write('Yes');end. 풀이 : 기하학 Graveyard 내부에 Chapel 이 있으며, 우리는 Graveyard 내부에서 Chapel의 영역을 침범하지 않은채 Grave을 추가할 수 있는지를 알아보아야 합니다. 두가지 방향에서 바..

var a,b,c,d,e,f,m,x,y:int64;beginx:=0;readln(a,b);readln(c,d);read(e,f);//0번 : 세개를 나열if(a=c) and (a=e) and (a=b+d+f) then x:=1;if(a=c) and (a=f) and (a=b+d+e) then x:=1;if(a=d) and (a=e) and (a=b+c+f) then x:=1;if(a=d) and (a=f) and (a=b+c+e) then x:=1;if(b=c) and (b=e) and (b=a+d+f) then x:=1;if(b=c) and (b=f) and (b=a+d+e) then x:=1;if(b=d) and (b=e) and (b=a+c+f) then x:=1;if(b=d) and (b=f) a..
var n,i,j:int64;d:array[1..2,1..30]of real;x,y,z,a:real;beginreadln(n);x:=0;y:=0;for i:=1 to n do begin readln(d[1][i],d[2][i]); x+=d[1][i]; y+=d[2][i];end; writeln(x:0:0,' ',y:0:0);a:=1e9;for i:=1 to n do begin x:=0;y:=0; for j:=1 to n do begin if(ij) then begin x+=d[1][j]; y+=d[2][j]; end; end; z:=x*x+y*y; z:=sqrt(z); if a>z then a:=z;end; write(a:0:2);end. 풀이 : 브루트 포스 0. 선분을 입력받습니다. 그러면서 ..

var n,i:int64;v0,th,x1,h1,h2,t,c,s,y:real;beginreadln(n);for i:=1 to n do begin readln(v0,th,x1,h1,h2); th:=(th*PI)/180; s:=sin(th); c:=cos(th); t:=(x1/(v0*c)); y:=v0*t*s-(9.81*t*t)/2; if (h1+1>y) or (h2-1 풀이 : 주어진 공식에 맞춰 변수를 끼어 넣어서 x1 일 때의 y값 구하기 0. 위의 식에서 먼저 첫번째 식을 이용하여 x1 일 때의 t (시간) 을 구해야 합니다1. 두번째 식에 위에서 구했던 t값을 넣어서 y값을 구합니다.2. y값이 [h1+1, h2-1] (닫힌구간 : h1+1 https://www.acmicpc.net/proble..
- Total
- Today
- Yesterday
- 그래프
- 기하학
- PASCAL
- 플로이드
- C++
- DP
- java
- Krustal
- union
- 1835번
- 누적 합
- 오프라인 쿼리
- 백준
- Lazy Propagation
- XOR
- 1835
- find
- 세그먼트 트리
- 그리디
- 최소 스패닝 트리
- C언어
- 정렬
- 덱
- DFS
- 스택
- 누적합
- BFS
- Segment Tree
- 브루트포스
- 최대공약수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |