olrlobt
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #1461 ๋์๊ด ๋ณธ๋ฌธ
๐ ๊ณจ๋5 - #1461 ๋์๊ด
๐ ํ ์คํธ์ผ์ด์ค ์ถ๊ฐ ํํธ
5 2
1 2 3 4 5
= 13
5 2
-45 -26 -18 -9 -4
= 89
5 3
-45 -26 -18 -9 -4
= 63
โ๏ธ ํ์ด๋ฒ
ํด๋น ๋ฌธ์ ๋, ๋ฌธ์ ๋ฅผ ์ดํดํ๊ธฐ์ ํ ์คํธ์ผ์ด์ค๊ฐ ํ์ด์ง๋ ๊ณผ์ ์ ๊ตฌํ๋ ๊ฒ์ด ๋ค์ ์ด๋ ค์ ๋ค.
๋น์ฐํ 2๊ฐ์ฉ ์ฑ ์ ๋ค๊ณ ๊ฐ๋ค๋ฉด, ๋๋ถํฐ ์ฐจ๋ก๋ก 2๊ฐ์ฉ ๋์ผ๋ฉด ๋๋ค๊ณ ์๊ฐ์ ํ๋๋ฐ ๋ต์ด ๋์ถ๋์ง ์์๊ณ ,
์ค๊ฐ์ ์ฑ ์ ๋๊ณ ๊ฐ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐ ํด๋ณด๋ ๋ต์ด ๋์ถ๋์์ง๋ง, ์์ ์ธ์ฐ๊ธฐ ์ด๋ ค์ ๋ค.
๋ฐ๋ผ์ ๋ค์ ๋ต์ด ๋์ถ๋๋ ๊ณผ์ ์ ์๊ฐํด ๋ณด๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค.
๋ด๊ฐ ์๊ฐํ ๋ต์ด ๋์ถ๋๋ ๊ณผ์ ์ ํ ์นธ์ฉ ์ ์งํ๋ ๋ฐฉ๋ฒ์ด๋ค.
ํ์นธ์ฉ ์์ง์ด๋ฉด์, ํด๋น ๋ฐฉํฅ์ ์๋ ๋ชจ๋ ์ฑ ๋ค์ ์ฎ๊ธฐ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ฉด๋๋ค.
์์ ํ ์คํธ์ผ์ด์ค๋ฅผ ์๋ก ๋ค๋ฉด,
5 2
1 2 3 4 5
= 13
๊ฐ๋ก์ถ์ ์ขํ๋ฅผ, ๋ค๋ชจ๋ฐ์ค๋ ์ฑ ์ ์๋ฏธํ๋ค๋ฉด, ์ฒ์์๋ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์์นํ ๊ฒ์ด๋ค.
๋ชจ๋ ์ฑ ์ 1๋ก ์ฎ๊ธฐ๊ธฐ ์ํด์๋ ์ฒซ ๊ฑธ์ 1์ ์๋ณต 2๋ฅผ 2ํ์ฐจ ๋งํผ ์ฎ๊ธฐ๋ฉด ๋๋ค.
1 + 2 + 2 = 5
๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ ์ฑ (1์ ๋์ฐฉํ์ผ๋ฏ๋ก ์ ์ธํ๋ค.)์ 2๋ก ์ฎ๊ธฐ๊ธฐ ์ํด์๋ ์ฒซ๊ฑธ์ 1์ ์๋ณต 2๋ฅผ 1ํ์ฐจ๋งํผ ์ฎ๊ธฐ๋ฉด ๋๋ค.
1+ 2 = 3
๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ ์ฑ (1๊ณผ 2๋ ์ ์ธ)์ 3๋ก ์ฎ๊ธฐ๊ธฐ ์ํด์๋ ์ฒซ๊ฑธ์ 1์ ์๋ณต 2๋ฅผ 1ํ์ฐจ๋งํผ ์ฎ๊ธฐ๋ฉด ๋๋ค.
1+ 2 = 3
๋๋จธ์ง 4์ 5์ ๊ฒฝ์ฐ ํ ๊ฑธ์์ฉ ์ฎ๊ธฐ๋ฉด ๋๋ค.
1 + 1 = 2
๋ฐ๋ผ์ 5 + 3 + 3 + 2 = 13 ์ด๋ผ๋ ๊ฐ์ด ๋์ถ๋๋ค.
๋์ถ๋๋ ๊ณผ์ ์ ์ ๋ ฅ๋ฐ์ M์ ๊ธฐ์ค์ผ๋ก ๋ง์ง๋ง์์ M์ ์์น๊น์ง๋ ์๋ณต์ ํ ํ์๊ฐ ์๋ค.
2M์ ์์น๊น์ง๋ 1๋ฒ ์๋ณตํด์ผํ๊ณ ,
3M์ ์์น๊น์ง๋ 2๋ฒ ์๋ณต์ ํด์ผํ๋ค.
์ฆ, ์์ ์์ ์์๋ 2๊ฐ์ ์ฑ ์ ๋ค ์ ์์ผ๋ฏ๋ก,
๋ง์ง๋ง์์ 2๋ฒ์งธ ์์นํ 4์ 5๋ ์๋ณต์ ํ ํ์๊ฐ ์๊ณ ,
๋ง์ง๋ง์์ 4๋ฒ์งธ ์์นํ 2์ 3์ 1๋ฒ ์๋ณต์ ํด์ผํ๋ค.
1์ ๊ฒฝ์ฐ๋ 5๋ฒ์งธ ์์นํ๊ธฐ์, 2๋ฒ ์๋ณต์ ํ๋ค.
๋ฐ๋ผ์, ์ ์ฒด ๊ธธ์ด์ธ 5๊น์ง ์ด๋ํ๋ ํ์๋ฅผ ํ ๋ฒ ๋ํด์ฃผ๊ณ , ์๋ณต์ผ๋ก ์์ง์ด๋ ํ์๋ฅผ ๋ํด์ฃผ๋ฉด ๊ฐ์ด ๋์ถ๋๋ค.
5 + (2+2)+(2)+(2) = 13
์์ ์์ ์์๋ ์ขํ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ 1์ด๊ธฐ๋๋ฌธ์ ์์ ๋์ถํ๊ธฐ ์ด๋ ค์ธ ์ ์๊ณ , ์์ ์ขํ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์ ์ขํ์ ๊ฒฝ์ฐ๋ ์๊ฐํด ์ฃผ์ด์ผ ํ๋ค.
ํ์ด๊ณผ์ :
1. ์์ ์ขํ์ ์์ ์ขํ์ ์ฑ ๋ค์ ๋ถ๋ฅํ๋ค.
2. ๊ฐ์ฅ ๋จผ ์ขํ๋ถํฐ i ๋ฒ์งธ๊น์ง ์์นํ ์ฑ ๋ค์ i / M ๋งํผ ์๋ณตํด์ผํ๋ค.
3. ์์ ์ขํ์ ์์ ์ขํ์ค ์์ ๊ฐ์ ๋จผ์ ์๋ณตํ๋ค.
๐๏ธ ํ์ด
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class baekjoon1461 {
static int M;
static List<Integer> leftPosition = new ArrayList<>();
static List<Integer> rightPosition = new ArrayList<>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
M = sc.nextInt();
for (int testCase = 0; testCase < N; testCase++) {
int position = sc.nextInt();
if (position < 0) {
leftPosition.add(Math.abs(position));
} else {
rightPosition.add(position);
}
}
leftPosition.add(0);
rightPosition.add(0);
solve();
}
public static void solve() {
Collections.sort(leftPosition, Collections.reverseOrder());
Collections.sort(rightPosition, Collections.reverseOrder());
int closePosition = leftPosition.get(0);
if (leftPosition.get(0) > rightPosition.get(0)) {
closePosition = rightPosition.get(0);
}
int sum = closePosition + calMinStep(leftPosition) + calMinStep(rightPosition);
System.out.println(sum);
}
private static int calMinStep(List<Integer> position) {
int step = position.get(0);
for (int i = M; i < position.size() - 1; i++) {
int returnNumber = i / M;
step += (position.get(i) - position.get(i + 1)) * 2 * returnNumber;
}
return step;
}
}
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #2293 ๋์ 1 (0) | 2023.01.10 |
---|---|
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #12865 ํ๋ฒํ ๋ฐฐ๋ญ (0) | 2023.01.09 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #13164 ํ๋ณต ์ ์น์ (1) | 2023.01.01 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋3] #13904 ๊ณผ์ (0) | 2022.12.31 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋4] #1715 ์นด๋ ์ ๋ ฌํ๊ธฐ (0) | 2022.12.31 |