[λ°±μ€] 11501λ² - μ£Όμ (C++)
λ¬Έμ
νμ€μ΄λ μμ¦ μ£Όμμ λΉ μ Έμλ€. κ·Έλ λ―Έλλ₯Ό λ΄λ€λ³΄λ λμ΄ λ°μ΄λ, λ λ³λ‘ μ£Όκ°λ₯Ό μμνκ³ μΈμ λ κ·Έκ² λ§μλ¨μ΄μ§λ€. λ§€μΌ κ·Έλ μλ μΈ κ°μ§ μ€ ν νλμ νλ€.
- μ£Όμ νλλ₯Ό μ°λ€.
- μνλ λ§νΌ κ°μ§κ³ μλ μ£Όμμ νλ€.
- μ무κ²λ μνλ€.
νμ€μ΄λ λ―Έλλ₯Ό μμνλ λ°μ΄λ μλͺ©μ κ°μ‘μ§λ§, μ΄λ»κ² ν΄μΌ μμ μ΄ μ΅λ μ΄μ΅μ μ»μ μ μλμ§ λͺ¨λ₯Έλ€. λ°λΌμ λΉμ μκ² λ λ³λ‘ μ£Όμμ κ°κ²©μ μλ €μ£Όμμ λ, μ΅λ μ΄μ΅μ΄ μΌλ§λ λλμ§ κ³μ°μ ν΄λ¬λΌκ³ λΆννλ€.
μλ₯Ό λ€μ΄ λ μκ° 3μΌμ΄κ³ λ λ³λ‘ μ£Όκ°κ° 10, 7, 6μΌ λ, μ£Όκ°κ° κ³μ κ°μνλ―λ‘ μ΅λ μ΄μ΅μ 0μ΄ λλ€. κ·Έλ¬λ λ§μ½ λ λ³λ‘ μ£Όκ°κ° 3, 5, 9μΌ λλ μ²μ λ λ μ μ£Όμμ νλμ© μ¬κ³ , λ§μ§λ§λ λ€ νμ λ²λ¦¬λ©΄ μ΄μ΅μ΄ 10μ΄ λλ€.
μ λ ₯
μ λ ₯μ 첫 μ€μλ ν μ€νΈμΌμ΄μ€ μλ₯Ό λνλ΄λ μμ°μ Tκ° μ£Όμ΄μ§λ€. κ° ν μ€νΈμΌμ΄μ€ λ³λ‘ 첫 μ€μλ λ μ μλ₯Ό λνλ΄λ μμ°μ N(2 ≤ N ≤ 1,000,000)μ΄ μ£Όμ΄μ§κ³ , λμ§Έ μ€μλ λ λ³ μ£Όκ°λ₯Ό λνλ΄λ Nκ°μ μμ°μλ€μ΄ 곡백μΌλ‘ ꡬλΆλμ΄ μμλλ‘ μ£Όμ΄μ§λ€. λ λ³ μ£Όκ°λ 10,000μ΄νλ€.
μΆλ ₯
κ° ν μ€νΈμΌμ΄μ€ λ³λ‘ μ΅λ μ΄μ΅μ λνλ΄λ μ μ νλλ₯Ό μΆλ ₯νλ€. λ΅μ λΆνΈμλ 64bit μ μνμΌλ‘ νν κ°λ₯νλ€.
μμ μ λ ₯ 1 볡μ¬
3
3
10 7 6
3
3 5 9
5
1 1 3 1 2
μμ μΆλ ₯ 1 볡μ¬
0
10
5
νμ΄κ³Όμ
#include <iostream>
#include <algorithm>
#include <vector>
int main(void)
{
int t, n, temp, max, m;
std::vector <int> v;
std::cin >> t;
for(int i = 0; i < t; i++)
{
std::cin >> n;
for(int j = 0; j < n; j++) {
std::cin >> temp;
v.push_back(temp);
}
m = 0;
for (int k = 0; k < v.size(); k++) {
max = 0;
for(int j = k; j < v.size(); j++) {
if (max < v[j]) max = v[j];
}
if (v[k] < max) m += max - v[k];
}
std::cout << m << "\n";
v.clear();
}
return (0);
}
λ¬Έμ μμ μκ°μ νμ΄ 5μ΄λ‘ μ£Όμ΄μ‘κΈΈλ μμ² λλνλ€λΌκ³ μκ°νμλλ°
2μ€ forλ¬Έ λ°©μμΌλ‘ nλ§νΌμ 2λ²λλ O(N^2)μ μκ°μ΄ λμ΄ μκ°μ΄κ³Όκ° λ°μμ΄ λμλ κ±° κ°λ€.
μ΄νλ‘ μ½λλ κ·Έλλ‘ λκ³ μκ°μ μ΄λ»κ² μ€μΌ μ μμμ§ κ³ λ―Όμ νλ€κ° 2μ€ forλ¬Έ λΆλΆμμ νμ¬ κ²μ¬νλ (v[k]) κ° μ΄νλ‘ κ°μ₯ ν° κ°μ μ°Ύλ μ ννΈλ₯Ό algorithm λ§€μλμ λ΄μ₯μ΄λμ΄μλ κ°μ₯ ν° κ°μ λ°κΎΈλ ν¨μλ‘ λ°κΎΈλ©΄ μκ°μ΄κ³Όκ° λ°μνμ§ μμ§μμκΉλΌλ μκ°μ κ°μ§κ³
#include <iostream>
#include <algorithm>
#include <vector>
int main(void)
{
int t, n, temp, max;
long long m;
std::vector <long long> v;
std::cin >> t;
for(int i = 0; i < t; i++)
{
std::cin >> n;
for(int j = 0; j < n; j++) {
std::cin >> temp;
v.push_back(temp);
}
m = 0;
for (int k = 0; k < v.size(); k++) {
max = *std::max_element(v.begin() + k, v.end());
if (v[k] < max) m += max - v[k];
}
std::cout << m << "\n";
v.clear();
}
return (0);
}
max_element ν¨μλ₯Ό μ¨κ°λ©΄μ μ¬μ©μ ν΄λ΄€λλ°
κ²°κ³Όλ λκ°μ΄ μκ°μ΄κ³Όκ° λ°μμ΄ λμλ€. κ³°κ³°μ΄ μκ°μ ν΄λ³΄λ max_elementλΌλ ν¨μμ체λ λ΄λΆμμλ
λ΄κ° ꡬνν vectorλ₯Ό λμμ ν°κ°μ μ°Ύλ κ²κ³Ό λ‘μ§μ΄ ν¬κ² λ€λ₯΄μ§λ μμκ±° κ°λ€λ μκ°μ΄ λ€μ΄μ μκ°λ³΅μ‘λμλ μ°¨μ΄κ° μκΈ°μ§ μλλ€κ³ μκ°μ κ°μ§κ² λμκ³ , μ λ¬Έμ λ₯Ό νκΈ°μν΄μλ O(N^2) νμμ λΆκ°λ₯νκ³ O(N)μ΄μ΄μΌλ§ ν μ μκ² λ€λΌλ μκ°μ΄ λ€μ΄μ 2μ€ forλ¬Έμ μ κ±°νκΈ°μν΄μ μλ‘κ² λ‘μ§μ μκ°νκ² λμλ€. κ³ λ―Όμ νλ€κ° λμ¨ λ‘μ§μ΄ μλμ λμμλ μ΄ λ‘μ§μ΄λ€.
#include <iostream>
#include <algorithm>
#include <vector>
int main(void)
{
int t, n;
long long m, temp, max;
std::vector <long long> v;
std::cin >> t;
for(int i = 0; i < t; i++)
{
std::cin >> n;
for(int j = 0; j < n; j++) {
std::cin >> temp;
v.push_back(temp);
}
m = 0;
max = 0;
for (int k = v.size() - 1; k >= 0; k--) {
if (v[k] > max) max = v[k];
else if (v[k] < max) m += max - v[k];
}
std::cout << m << "\n";
v.clear();
}
return (0);
}
μ΄ λ‘μ§μ 2μ€ forλ¬Έ λμ λ°°μ΄μ μμμΌλ‘ λμμ ν° κ°(max)λ₯Ό κ°±μ ν΄κ°λ©° μ§νμ΄ λκ³ ν° κ°(max) μ΄νλ‘ λμ€λ μμ κ°μ μ£Όμμ΄ μ¬λλ€λ λ§κ³Ό κ°μ μλ―Έκ° λλ―λ‘ max(ν°κ°) - v[k](νμ¬ κ²μ¬μ€μΈ κ°)μΌλ‘ μ£Όμμμ΅μ μ΄ν©μΌλ‘ λν΄μ£Όμλ€.
μ΄λ°μμΌλ‘ μκ°λ³΅μ‘λλ₯Ό O(N^2)μμ O(N) νμμΌλ‘ λ°κΎΈκ²λλ λ¬Έμ λ₯Ό ν΄κ²° ν μ μμλ€.
code
#include <iostream>
#include <algorithm>
#include <vector>
int main(void)
{
int t, n;
long long m, temp, max;
std::vector <long long> v;
std::cin >> t;
for(int i = 0; i < t; i++)
{
std::cin >> n;
for(int j = 0; j < n; j++) {
std::cin >> temp;
v.push_back(temp);
}
m = 0;
max = 0;
for (int k = v.size() - 1; k >= 0; k--) {
if (v[k] > max) max = v[k];
else if (v[k] < max) m += max - v[k];
}
std::cout << m << "\n";
v.clear();
}
return (0);
}
νκΈ°
μκ°λ³΅μ‘λλ₯Ό 미리 κ³μ°μ ν΄λ³΄κ³ μ€κ³λ₯Ό μ λλ‘ μΈμμ λ¬Έμ μ μ κ·Όμ νμΌλ©΄ μκ°μ΄κ³Όλ₯Ό μ λ κ² λ§μ΄ λ΄μ§μκ³ λΉ λ₯΄κ² λ¬Έμ μ μ κ·Ό ν μ μμμ κ±° κ°μλ° μμ§ μκ°λ³΅μ‘λλ₯Ό κ³μ°νλκ²λ μ€κ³νλ λΆλΆμ μμ΄μ λ§μ΄ λΆμ‘±νλ€κ³ λλΌκ² λμλ€.
λμ± λ€μν λ¬Έμ λ€μ μ κ·Όμ ν΄λ΄μ λΉ λ₯΄κ² ν¨μ¨μ μΈ λ‘μ§μ μ€κ³ν μ μλλ‘ λ Έλ ₯μ ν΄μΌν κ±° κ°λ€.