C++

[백준 알고리즘] 2399번 : 거리의 합, c++

2022. 5. 7. 23:16

https://www.acmicpc.net/problem/2399

 

2399번: 거리의 합

첫째 줄에 n(1 ≤ n ≤ 10,000)이 주어진다. 다음 줄에는 x[1], x[2], x[3], …, x[n]이 주어진다. 각각은 0 이상 1,000,000,000 이하의 정수이다.

www.acmicpc.net

c++로 백준 2399번 문제를 풀어보겠다.

 

 

 

 

문제

수직선에 n개의 점이 찍혀 있다. 각각의 점의 x좌표가 주어졌을 때, n2개의 모든 쌍에 대해서 거리를 더한 값을 구하는 프로그램을 작성하시오.

즉, 모든 i, j에 대해서 |x[i] - x[j]|의 합을 구하는 것이다.

입력

첫째 줄에 n(1 ≤ n ≤ 10,000)이 주어진다. 다음 줄에는 x[1], x[2], x[3], …, x[n]이 주어진다. 각각은 0 이상 1,000,000,000 이하의 정수이다.

출력

첫째 줄에 답을 출력한다.

예제 입력 1 복사

5
1 5 3 2 4

예제 출력 1 복사

40

 

 

 

 

<문제 풀이>

1. n을 입력받는다.

2. n개의 숫자를 입력받아 배열에 저장한다.

3. 배열을 오름차순으로 정렬한다.

4. 배열의 모든 수의 차를 sum에 저장한다.

5. sum*2값을 출력한다.

 

 

 

코드는 다음과 같다.

 

 

백준 알고리즘에서 "틀렸습니다"라고 떴다. 이유를 찾지 못해 다시 도전할 예정이다.