https://www.acmicpc.net/problem/2374
λ¬Έμ
n(1 ≤ n ≤ 1,000)κ°μ μμ°μ A[1], A[2], A[3], …, A[n]μ΄ μλ€. μ΄ μμ°μμ Add(i)λΌλ μ°μ°μ νλ©΄, A[i]κ° 1λ§νΌ μ¦κ°νλ€. μ΄λ, A[i]λ§ μ¦κ°νλ κ²μ΄ μλκ³ , A[i]μ μ’μ°λ‘ μΈμ ν κ°μ μμ κ·Έλ£Ήμ΄ νλ²μ 1μ© μ¦κ°νλ€. A[1]κ³Ό A[n]μ μΈμ ν΄ μμ§ μλ€.
μλ₯Ό λ€μ΄ μκ° {1, 1, 1, 1, 3, 3, 1} μ΄μλ€κ³ ν΄ λ³΄μ. Add(2)λ₯Ό νλ©΄ A[2]μ μ’μ°λ‘ μΈμ ν κ°μ μκ° 1μ© μ¦κ°νλκΉ {2, 2, 2, 2, 3, 3, 1}μ΄ λλ€. μ¬κΈ°μ Add(4)λ₯Ό νλ©΄ {3, 3, 3, 3, 3, 3, 1}μ΄ λκ³ , μ¬κΈ°μ Add(1)μ νλ©΄ {4, 4, 4, 4, 4, 4, 1}μ΄ λλ€.
μ΄μ κ°μ΄ AddλΌλ μ°μ°μ μ¬μ©νμ¬ A[1] = A[2] = A[3] = … = A[n]μ΄ λλλ‘ νλ € νλ€. μ΄λ, μ΅μ νμλ‘ Addμ°μ°μ μ¬μ©νλ λ°©λ²μ μ°Ύλ κ²μ΄ λ¬Έμ μ΄λ€.
μ λ ₯
첫째 μ€μ μ μ nμ΄ μ£Όμ΄μ§λ€. λ€μ nκ°μ μ€μλ μ°¨λ‘λ‘ A[1], A[2], …, A[n]μ΄ μ£Όμ΄μ§λ€. λͺ¨λ μ λ ₯μ 1,000,000,000μ λμ§ μλλ€.
μΆλ ₯
첫째 μ€μ μ΅μμ Addμ°μ° μ¬μ© νμλ₯Ό μΆλ ₯νλ€. μ΄ κ°μ 1025μ λμ§ μλλ€.
νμ΄
stackμ μ΄μ©νμ¬μ νλ©΄ κ°λ¨!
λͺ¨λ κ°μ κ°μ΄ λκ² νλ νμλ κ°μ₯ μμ κ°μ΄ κ°μ₯ ν° κ°μ΄ λκ² νλ©΄ ꡬν μ μλ€.
1οΈβ£ stackμ΄ λΉμλ€λ©΄ push
2οΈβ£ μλ‘ μ λ ₯λ κ°μ΄ stackμ top보λ€
π ν¬λ©΄, μ°¨μ΄ λ§νΌ λ΅μ λν΄μ£Όκ³ , pop ν μλ‘μ΄ κ°μ push
π μλ€λ©΄, pop ν μλ‘μ΄ κ°μ push
π μ λ ₯λλ κ° μ€, κ°μ₯ ν° κ°μ μ μ₯ν΄μ€λ€.
3οΈβ£ μ λ ₯μ΄ λλλ©΄, stackμ λͺ¨λ κ°μ popν΄μ£Όλ©΄μ max κ°κ³Όμ μ°¨μ΄λ₯Ό λν΄μ£Όλ©΄ λμπβοΈ
μ½λ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main_BOJ_2374_κ°μμλ‘λ§λ€κΈ° {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Long> stack = new Stack<>();
int N = Integer.parseInt(br.readLine());
long max = 0;
long ans = 0;
for(int i = 0 ; i < N ; i++){
long x = Long.parseLong(br.readLine());
max = Math.max(max, x);
if(stack.isEmpty())
stack.push(x);
else{
if(stack.peek() < x){
ans += x - stack.pop();
stack.push(x);
}
else if(stack.peek() > x){
stack.pop();
stack.add(x);
}
}
}
while(!stack.isEmpty()){
long num = stack.pop();
ans += max - num;
}
System.out.println(ans);
}
}
'μκ³ λ¦¬μ¦ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ λ°±μ€ / BOJ 1987 ] μνλ²³ ( μλ° / JAVA ) (0) | 2021.10.19 |
---|---|
[ λ°±μ€ / BOJ 20168 ] 골λͺ© λμ₯ νΈμ - κΈ°λ₯μ± ( μλ° / JAVA ) (0) | 2021.10.19 |
[ λ°±μ€ / BOJ 1080 ] νλ ¬ ( JAVA / μλ° ) (0) | 2021.10.11 |
[ λ°±μ€ / BOJ 20551 ] Sort λ§μ€ν° λ°°μ§νμ νκ³μ ( JAVA / μλ° ) (0) | 2021.10.11 |
[ λ°±μ€ / BOJ 2573 ] λΉμ° ( JAVA / μλ° ) (0) | 2021.10.07 |