Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 에라토스테네스의 체
- 그리디
- 13164
- JavaScript
- 브루트포스
- 세그먼트 트리
- 정수론
- 트리
- 애드 혹
- boj
- 싸피
- 정렬
- 누적 합
- 슬라이딩 윈도우
- 수학
- Python
- DP
- 투 포인터
- 모던 JavaScript 튜토리얼
- 플로이드-워셜
- SSAFY
- 그래프
- BFS
- 해시 테이블
- 2357
- 구현
- 맵
- 문자열
- 이분 탐색
- DFS
Archives
- Today
- Total
흙금이네 블로그
[BOJ] 2212 - 센서 (Python, JavaScript) 본문
아이디어
거리가 먼 두 센서는 각각 다른 집중국과 통신하도록 한다.
풀이 #1 (Python)
오름차순 정렬된 센서 좌표를 리스트 sensor에 입력 받고, 센서 간 거리를 오름차순 정렬하여 리스트 D에 저장한다.
N-1개의 센서 간 거리 중 가장 큰 값을 K-1개 제외할 수 있으므로 거리가 짧은 순으로 N-K개 값의 합을 출력한다.
def solution():
N = int(input())
K = int(input())
sensor = sorted(map(int, input().split()))
D = sorted([sensor[i+1]-sensor[i] for i in range(N-1)])
print(sum(D[:N-K]))
solution()
풀이 #2 (JavaScript)
풀이 #1과 마찬가지 방식으로 동작한다.
sort 메서드로 센서 좌표와 센서 간 거리를 오름차순 정렬하고, 짧은 거리 순으로 N-K개 값의 합을 res에 저장해 출력한다.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
const N = +input[0];
const K = +input[1];
const sensor = input[2].split(' ').map(Number).sort((a, b) => a-b);
let D = [];
for (let i=0; i<N-1; i++) D.push(sensor[i+1]-sensor[i]);
D.sort((a, b) => a-b);
let res = 0;
for (let i=0; i<N-K; i++) res += D[i];
console.log(res);
'알고리즘' 카테고리의 다른 글
[BOJ] 2565 - 전깃줄 (Python) (0) | 2023.02.16 |
---|---|
[BOJ] 10868 - 최솟값 (Python) (0) | 2023.02.16 |
[BOJ] 2357 - 최솟값과 최댓값 (Python) (0) | 2023.02.16 |
[BOJ] 20300 - 서강근육맨 (Python, JavaScript) (0) | 2023.02.16 |
[BOJ] 2042 - 구간 합 구하기 (Python) (0) | 2023.02.16 |
Comments