[C++, Golang] 2012๋ฒ: ๋ฑ์ ๋งค๊ธฐ๊ธฐ
ํด๋น ๊ธ์ ๋ด์ฉ์ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ ๊ธ์ด์ด์ ์ฃผ๊ด์ ์ธ ํ์ด์ ๋๋ค. ๋ ์ข์ ํ์ด๊ฐ ์๋ค๋ฉด ๋๊ธ๋ก ํผ๋๋ฐฑ ๋ถํ๋๋ฆฝ๋๋ค(__)
๋งํฌ
https://www.acmicpc.net/problem/2012
๋ฌธ์ ์ค๋ช
2007๋ KOI์ N๋ช ์ ํ์๋ค์ด ์ฐธ๊ฐํ์๋ค. ๊ฒฝ์์ผ ์ ๋ ์ธ ์๋น์์ง์ผ์, ๋ชจ๋ ํ์๋ค์ ์์ ์ด N๋ช ์ค์์ ๋ช ๋ฑ์ ํ ๊ฒ์ธ์ง ์์ ๋ฑ์๋ฅผ ์ ์ด์ ์ ์ถํ๋๋ก ํ์๋ค.
KOI ๋ด๋น ์กฐ๊ต๋ก ์ฐธ๊ฐํ ๊น์ง์ ์กฐ๊ต๋ ์ค์๋ก ๋ชจ๋ ํ์์ ํ๋ก๊ทธ๋จ์ ๋ ๋ ค ๋ฒ๋ ธ๋ค. 1๋ฑ๋ถํฐ N ๋ฑ๊น์ง ๋์์ฐจ ์์ด ๋ฑ์๋ฅผ ๋งค๊ฒจ์ผ ํ๋ ๊น ์กฐ๊ต๋, ์ด์ฉ ์ ์์ด ๊ฐ ์ฌ๋์ด ์ ์ถํ ์์ ๋ฑ์๋ฅผ ๋ฐํ์ผ๋ก ์์๋ก ๋ฑ์๋ฅผ ๋งค๊ธฐ๊ธฐ๋ก ํ๋ค.
์์ ์ ๋ฑ์๋ฅผ A๋ฑ์ผ๋ก ์์ํ์๋๋ฐ ์ค์ ๋ฑ์๊ฐ B ๋ฑ์ด ๋ ๊ฒฝ์ฐ, ์ด ์ฌ๋์ ๋ถ๋ง๋๋ A์ B์ ์ฐจ์ด ( |A-B| )๋ก ์์นํํ ์ ์๋ค.
๋น์ ์ N๋ช ์ ์ฌ๋๋ค์ ๋ถ๋ง๋์ ์ด ํฉ์ ์ต์๋ก ํ๋ฉด์, ํ์๋ค์ ๋ฑ์๋ฅผ ๋งค๊ธฐ๋ ค๊ณ ํ๋ค. ๊ฐ ์ฌ๋์ ์์ ๋ฑ์๊ฐ ์ฃผ์ด์ก์ ๋, ๊น ์กฐ๊ต๋ฅผ ๋์ ์ด๋ฌํ ๋ถ๋ง๋์ ํฉ์ ์ต์๋ก ํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ํ ์กฐ๊ฑด
์ฒซ์งธ ์ค์ ์์ฐ์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 500,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ์ฌ๋์ ์์ ๋ฑ์๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์์ ๋ฑ์๋ 500,000 ์ดํ์ ์์ฐ์์ด๋ค.
์ ์ถ๋ ฅ ์
<์ ๋ ฅ 1>
5
1
5
3
1
2
<์ถ๋ ฅ 1>
3
ํ์ด
[Golang]
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func absoluteSubtract(a int, b int) uint64 {
result := a - b
if result < 0 {
return uint64(result * -1)
}
return uint64(result)
}
func main() {
r := bufio.NewReader(os.Stdin)
var num int
_, _ = fmt.Fscanf(r, "%d\n", &num)
expectedList := make([]int, 0, num)
for i := 0; i < num; i++ {
var expected int
_, _ = fmt.Fscanf(r, "%d\n", &expected)
expectedList = append(expectedList, expected)
}
sort.Ints(expectedList)
var result uint64
for i := 0; i < num; i++ {
result += absoluteSubtract(expectedList[i], i+1)
}
fmt.Println(result)
}
[C++]
#include <stdio.h>
#include <vector>
#include <algorithm>
const int MAX_NUM = 500000;
int main()
{
std::vector<int> expectedVector;
int num;
scanf("%d", &num);
expectedVector.reserve(MAX_NUM);
for (int i = 0; i < num; i++)
{
int expected;
scanf("%d", &expected);
expectedVector.push_back(expected);
}
std::sort(expectedVector.begin(), expectedVector.end());
long long result = 0;
for (int i = 1; i <= num; i++)
{
int expected = expectedVector[i-1];
if (expected - i > 0)
{
result += expected - i;
}
else
{
result += i - expected;
}
}
printf("%lld\n", result);
return 0;
}
ํ์ด ์ค๋ช
์์ ์ด ์์ํ ๋ฑ์์ ์ค์ ๋ฑ์์ ๊ฐ์ ์ต์ํ์ํค๋ฉด ๋๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์ ํ์์ด ์์ํ ๋ฑ์์ ์ค์ ๋ฑ์๋ฅผ ์ ๋ ฌํ์ฌ ๋ ์์ ์ ๋๊ฐ ์ฐจ๋ฅผ ๊ตฌํ ๋ค ๋ชจ๋ ๋ํด์ฃผ๋ฉด ๋ถ๋ง๋ ํฉ์ ์ต์๊ฐ์ด ๋๋ค.
์ฃผ์: ํ์ ์๊ฐ N๋ช ์ผ ๋ ์์ํ ๋ฑ์๊ฐ N ์ด์ ์ผ ์ ์๋ค -_-;; (ex. ํ์์ด 15๋ช ์ธ๋ฐ ์์ํ ๋ฑ์๋ฅผ 20์๋ผ๊ณ ์ ๋ ฅํ ์ ์์)
'Algorithm > ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++, Golang] 2798๋ฒ: ๋ธ๋์ญ (0) | 2020.07.14 |
---|---|
[C++, Golang, Java] 14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2020.07.10 |
[C++, Golang] 11729๋ฒ: ํ๋ ธ์ด ํ ์ด๋ ์์ (0) | 2020.07.10 |
[C++] 2447๋ฒ: ๋ณ์ฐ๊ธฐ - 10 (0) | 2020.07.07 |
[Golang] 2447๋ฒ: ๋ณ์ฐ๊ธฐ - 10 (0) | 2020.07.07 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[C++, Golang, Java] 14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ
[C++, Golang, Java] 14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ
2020.07.10 -
[C++, Golang] 11729๋ฒ: ํ๋ ธ์ด ํ ์ด๋ ์์
[C++, Golang] 11729๋ฒ: ํ๋ ธ์ด ํ ์ด๋ ์์
2020.07.10 -
[C++] 2447๋ฒ: ๋ณ์ฐ๊ธฐ - 10
[C++] 2447๋ฒ: ๋ณ์ฐ๊ธฐ - 10
2020.07.07 -
[Golang] 2447๋ฒ: ๋ณ์ฐ๊ธฐ - 10
[Golang] 2447๋ฒ: ๋ณ์ฐ๊ธฐ - 10
2020.07.07