흙금이네 블로그

[BOJ] 2212 - 센서 (Python, JavaScript) 본문

알고리즘

[BOJ] 2212 - 센서 (Python, JavaScript)

흙금 2023. 2. 16. 20:09

 

 

아이디어

 

거리가 먼 두 센서는 각각 다른 집중국과 통신하도록 한다.

 

 

풀이 #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);

 

Comments