1. ๋ฌธ์ ์์ฝ
- N๊ฐ์ ๊ฟ์ ๋ด๋ ๊ณต๊ฐ์ด ์ฃผ์ด์ง๊ณ , ๊ฐ ๊ณต๊ฐ์๋ ๊ฟ์ ์์ ์๋ฏธํ๋ ์ซ์๊ฐ ํ์๋ฉ๋๋ค.
- N๊ฐ ์ค "ํ๋"์ ๊ณต๊ฐ์๋ ๋ฒ์ง์ด ์๊ณ , 2๋ง๋ฆฌ์ ๊ฟ๋ฒ์ ์๋ก ๋ค๋ฅธ ๊ณต๊ฐ์์ ์์ํด ๋ฒ์ง์ผ๋ก ์ด๋ํฉ๋๋ค.
- ๊ฟ๋ฒ์ ๋ฒ์ง์ผ๋ก ์ด๋ํ๋ฉด์ ์์์ ์ ์ ์ธํ ๊ณต๊ฐ์ ๋ํด ๊ฟ์ ์์งํ ์ ์์ต๋๋ค.
- ์์ง ๊ฐ๋ฅํ ์ต๋์ ๊ฟ์ ์์ ๊ตฌํ๋ ๋ฌธ์ ์ ๋๋ค.
์ ๋ ฅ ํ๋ผ๋ฏธํฐ
- `int N`
- `int[] honeys`
๋ฐํ ํ์
- `int maxHoney`
์์
- N: 7
- honeys: [9, 9, 4, 1, 4, 9, 9]
- return: 57
์ฃผ์ ์ฌํญ
- ์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ, ์ค์ฒฉ for๋ฌธ์ ์ด์ฉํด ๋ชจ๋ ์์น๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ์์ผ๋ก ํ ์ ์์ง๋ง ์๊ฐ ํจ์จ์ฑ์ ํต๊ณผํ์ง ๋ชปํฉ๋๋ค.
- ๋ฐ๋ผ์ ๊ตฌ๊ฐ ํฉ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํด ๋จ์ผ for๋ฌธ์ ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํฉ๋๋ค.
2. ๋ฌธ์ ํ์ด
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
try (
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
) {
int N = Integer.parseInt(br.readLine());
int[] honeys = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int[] prefixSum = new int[N];
prefixSum[0] = honeys[0];
for (int i = 1; i < N; i++) {
prefixSum[i] = prefixSum[i-1] + honeys[i];
}
int maxHoney = 0;
// Case 1: ๋ฒ(1)-๋ฒ(2)-๋ฒํต
for (int bee2 = 1; bee2 < N-1; bee2++) {
int bee1Honey = prefixSum[N-1] - honeys[0] - honeys[bee2];
int bee2Honey = prefixSum[N-1] - prefixSum[bee2];
maxHoney = Math.max(maxHoney, bee1Honey + bee2Honey);
}
// Case 2: ๋ฒํต-๋ฒ(1)-๋ฒ(2)
for (int bee1 = N-2; bee1 > 0; bee1--) {
int bee1Honey = prefixSum[bee1] - honeys[bee1];
int bee2Honey = prefixSum[N-1] - honeys[bee1] - honeys[N-1];
maxHoney = Math.max(maxHoney, bee1Honey + bee2Honey);
}
// Case 3: ๋ฒ(1)-๋ฒํต-๋ฒ(2)
for (int hive = 1; hive < N-1; hive++) {
int bee1Honey = prefixSum[hive] - honeys[0];
int bee2Honey = prefixSum[N-1] - prefixSum[hive-1] - honeys[N-1];
maxHoney = Math.max(maxHoney, bee1Honey + bee2Honey);
}
bw.write(String.valueOf(maxHoney));
}
}
}
์๊ฐ ๋ณต์ก๋
- ์๊ฐ ๋ณต์ก๋: `O(N)`
- Prefix Sum ๊ณ์ฐ: ๋จ์ผ for๋ฌธ์ ์ฌ์ฉํด prefixSum ๋ฐฐ์ด์ ์ฑ์ฐ๋ ์์ ์ด `O(N)`์ ๋๋ค.
- ๊ฐ ๊ฒฝ์ฐ๋ณ ์ต๋ ๊ฟ ์์ง๋ ๊ณ์ฐ: ์ธ ๊ฐ์ง ๊ฒฝ์ฐ(Case 1, Case 2, Case 3)์ ๋ํด ๊ฐ๊ฐ ๋จ์ผ for๋ฌธ์ ์ฌ์ฉํด ์๊ฐ ๋ณต์ก๋๋ `O(N)`์ ๋๋ค.
'๐ฏ ์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (0) | 2024.11.18 |
---|---|
[๋ฐฑ์ค] ๋ฆฌ๋ชจ์ปจ (0) | 2024.11.14 |