- Today
- Total
- λ°±μλ
- μλ£κ΅¬μ‘°
- ꡬν
- java
- tree
- λ€μ΅μ€νΈλΌ
- λ°μ΄ν°λ² μ΄μ€
- μμμ λ ¬
- μΈν΄
- Algorithm
- pytorch
- λ°±μ€
- CS
- OOP
- λ¬Έλ²
- Graph
- μλ°μμ μ
- νλ‘κ·Έλλ¨Έμ€
- MST
- leetcode
- database
- 벨λ§ν¬λ
- μλ°
- spring
- BFS
- dp
- PS
- μ‘Έμ μν
- array
- 그리λ
Partially Committed
[λ°±μ€ 27210] μ μ λͺ¨μλ μ¬λΉ(JAVA) λ³Έλ¬Έ
[λ°±μ€ 27210] μ μ λͺ¨μλ μ¬λΉ(JAVA)
WonderJay 2023. 1. 16. 18:07
2 μ΄ | 512 MB | 285 | 124 | 98 | 47.573% |
λ¬Έμ
μ μ λͺ¨μλ μ¬λΉμλ μ μ μ‘°κ°ν λμ Nκ°κ° μΌλ ¬λ‘ λμ¬ μλ€. κ° λμμ μΌμͺ½ λλ μ€λ₯Έμͺ½μ λ°λΌλ³΄κ³ μμλ€. μ°½μμ΄λ μ°μν λͺ κ°μ λμμ κΈμΉ μ νμ¬ κΆκ·Ήμ κΉ¨λ¬μμ μ»κ³ μ νλ€.
κΆκ·Ήμ κΉ¨λ¬μμ μ»κΈ° μν΄μλ κ°λ₯ν ν λ§μ κΈμ λμλ€μ΄ κ°μ λ°©ν₯μ λ°λΌλ³΄μμΌ νλ€. λ°©ν₯μ΄ λ€λ₯Έ λμμ κΉ¨λ¬μμ μΉλͺ μ μ΄λ€. κΉ¨λ¬μμ μμ μλμ κ°μ΄ μ μλλ€.
| (μΌμͺ½μ λ°λΌλ³΄λ κΈμ λμμ κ°μ) - (μ€λ₯Έμͺ½μ λ°λΌλ³΄λ κΈμ λμμ κ°μ) |
μ°½μμ΄λ κΆκ·Ήμ κΉ¨λ¬μμ μ»μ μ μμκΉ?
μ λ ₯
첫째 μ€μ λμμ κ°μ Nμ΄ μ£Όμ΄μ§λ€.
λμ§Έ μ€μ λμμ΄ λμ΄λ μμλλ‘, κ° λμμ΄ λ°λΌλ³΄κ³ μλ λ°©ν₯μ΄ μ£Όμ΄μ§λ€. μ λ ₯μ νΈμμ μΌμͺ½μ 1, μ€λ₯Έμͺ½μ 2λΌκ³ νμ.
μΆλ ₯
μ΅λν λ§μ κΉ¨λ¬μμ μ»κΈ° μν΄ κΈμ μΉ νμμ λ, μ»μ μ μλ κΉ¨λ¬μμ μμ μΆλ ₯νλ€.
μ ν
- 1 ≤ N ≤ 100,000
https://usedto-wonderwhy.tistory.com/entry/%EB%B0%B1%EC%A4%80-1912-%EC%97%B0%EC%86%8D%ED%95%A9-DP
μ λ¬Έμ μ κ±°μ μ μ¬νλ€.
μΌμͺ½μ λ°λΌλ³΄λ κΈμ λμμ κ°μλ₯Ό -1 μ΄λΌκ³ μ μνκ³ μ€λ₯Έμͺ½μ λ°λΌλ³΄λ κΈμ λμμ κ°μλ₯Ό +1 μ΄λΌκ³ μ μνλ©΄
μ£Όμ΄μ§ μ λ ₯μ -1, +1 λ‘ μ΄λ£¨μ΄μ§ νλμ μ°μ μμ΄μ΄ λλ©°,
ν΄λΉ μμ΄μμ ꡬν μ μλ μ°μν©μ μ΅λλ₯Ό ꡬνλ©΄ λλ€.
dp [ i ] λ₯Ό i λ²μ§ΈκΉμ§μ μ΅λ μ°μν©μ΄λΌκ³ μ μνλ©΄,
dp [ i ] = Max ( dp[i-1]+arr[i] , arr[i] ) μ κ°λ€.
(i-1 λ²μ§ΈκΉμ§μ μ΅λ μ°μν©μ νμ¬ i λ²μ§Έ μμλ₯Ό λν κ²κ³Ό, νμ¬ i λ²μ§Έ μμ μ€ λ ν° κ°μ΄ i λ²μ§ΈκΉμ§μ μ΅λ μ°μν©)
λ€λ§, μΌμͺ½μ -1, μ€λ₯Έμͺ½μ +1 λ‘ λ°λΌλ³Έ κ²½μ°μ
μΌμͺ½μ +1, μ€λ₯Έμͺ½μ -1 λ‘ λ°λΌλ³Έ κ²½μ°λ₯Ό κ°κ° ꡬνμ¬ λ μ€ μ΅λκ°μ ꡬν΄μ£Όλ κ²μ μ μν΄μΌ νλ€.
μ΄λ₯Ό ꡬννλ©΄ μλμ κ°λ€.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
int n;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk = new StringTokenizer(br.readLine());
n = Integer.parseInt(stk.nextToken());
int[] arr = new int[n];
stk = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(stk.nextToken());
}
int[] dp = new int[n];
int ans = -10;
for (int i = 0; i < n; i++) {
int cur = arr[i] == 1 ? -1 : 1;
if (i == 0) {
dp[i] = cur;
} else { // i!=0
dp[i] = Math.max(dp[i - 1] + cur, cur);
}
}
for (int i = 0; i < n; i++) {
ans = Math.max(ans, dp[i]);
}
dp = new int[n];
for (int i = 0; i < n; i++) {
int cur = arr[i] == 1 ? 1 : -1;
if (i == 0) {
dp[i] = cur;
} else { // i!=0
dp[i] = Math.max(dp[i - 1] + cur, cur);
}
}
for (int i = 0; i < n; i++) {
ans = Math.max(ans, dp[i]);
}
System.out.println(ans);
}
}
'π₯ Algorithm || λ¬Έμ νμ΄ > PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€ 1516] κ²μ κ°λ°νκΈ° (JAVA) (2) | 2023.01.17 |
---|---|
[λ°±μ€ 2252] μ€ μΈμ°κΈ°(JAVA) (0) | 2023.01.17 |
[λ°±μ€ 1912] μ°μν© (JAVA) (0) | 2023.01.16 |
[λ°±μ€ 1043] κ±°μ§λ§(JAVA) - Union&Find (0) | 2023.01.16 |
[Algorithm] Palindrome Check (0) | 2022.10.26 |