diff --git "a/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 10986] \353\202\230\353\250\270\354\247\200 \355\225\251.cpp" "b/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 10986] \353\202\230\353\250\270\354\247\200 \355\225\251.cpp" new file mode 100644 index 0000000..f3d51d7 --- /dev/null +++ "b/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 10986] \353\202\230\353\250\270\354\247\200 \355\225\251.cpp" @@ -0,0 +1,48 @@ +#include +#include +#include +#include +#include +#include +using namespace std; + +int arr[1000001]; +long long preSum[1000001]; +int mod[1000001]; + +// nC2 +long long combi(long long n) { + return n * (n - 1) / 2; +} + +int main() { + ios::sync_with_stdio(false); + cin.tie(NULL); cout.tie(NULL); + + int N, M; + cin >> N >> M; + + preSum[0] = 0; + mod[0] = 0; + + for (int i = 1; i <= N; i++) { + cin >> arr[i]; + preSum[i] = preSum[i - 1] + arr[i]; + mod[i] = preSum[i] % M; + if (mod[i] < 0) mod[i] += M; + } + + map m; // 공통된 나머지 개수 세기 + for (int i = 0; i <= N; i++) { + m[mod[i]]++; + } + + long long res = 0; + for (auto iter : m) { + res += combi(iter.second); + } + + cout << res; + + return 0; +} diff --git "a/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 13164] \355\226\211\353\263\265 \354\234\240\354\271\230\354\233\220.cpp" "b/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 13164] \355\226\211\353\263\265 \354\234\240\354\271\230\354\233\220.cpp" new file mode 100644 index 0000000..e4fbeb2 --- /dev/null +++ "b/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 13164] \355\226\211\353\263\265 \354\234\240\354\271\230\354\233\220.cpp" @@ -0,0 +1,29 @@ +#include +#include +#include +using namespace std; + +int N, K; +int arr[300001]; + +int main() { + ios::sync_with_stdio(false); + cin.tie(NULL); cout.tie(NULL); + + int sum = 0; + cin >> N >> K; + vector v; + cin >> arr[0]; + for (int i = 1; i < N; i++) { + cin >> arr[i]; + v.push_back(arr[i] - arr[i - 1]); + } + sort(v.begin(), v.end()); + + for (int i = 0; i < N - K; i++) { + sum += v[i]; + } + cout << sum; + + return 0; +} diff --git "a/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 1699] \354\240\234\352\263\261\354\210\230\354\235\230 \355\225\251.cpp" "b/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 1699] \354\240\234\352\263\261\354\210\230\354\235\230 \355\225\251.cpp" new file mode 100644 index 0000000..2c301a4 --- /dev/null +++ "b/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 1699] \354\240\234\352\263\261\354\210\230\354\235\230 \355\225\251.cpp" @@ -0,0 +1,26 @@ +#include +#include +#include +#include +#include +using namespace std; + +int N; +int dp[100001]; + +int main() { + ios::sync_with_stdio(false); + cin.tie(NULL); cout.tie(NULL); + + cin >> N; + for (int i = 1; i <= N; i++) { + dp[i] = i; + for (int j = 1; j * j <= i; j++) { + dp[i] = min(dp[i], dp[i - j * j] + 1); + } + } + + cout << dp[N]; + + return 0; +} diff --git "a/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 1918] \355\233\204\354\234\204 \355\221\234\352\270\260\354\213\235.cpp" "b/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 1918] \355\233\204\354\234\204 \355\221\234\352\270\260\354\213\235.cpp" new file mode 100644 index 0000000..fbbee7a --- /dev/null +++ "b/\353\260\225\354\230\210\354\247\204/15\354\243\274\354\260\250/[\353\260\261\354\244\200 1918] \355\233\204\354\234\204 \355\221\234\352\270\260\354\213\235.cpp" @@ -0,0 +1,59 @@ +#include +#include +#include +#include +#include +using namespace std; + +int main() { + ios::sync_with_stdio(false); + cin.tie(NULL); cout.tie(NULL); + + string str, res = ""; + cin >> str; + + stack s; + for (int i = 0; i < str.size(); i++) { + if ('A' <= str[i] && str[i] <= 'Z') { + res += str[i]; + } + else { + switch (str[i]) { + case '(': + s.push(str[i]); + break; + case '*': + case '/': + while (!s.empty() && (s.top() == '*' || s.top() == '/')) { + res += s.top(); + s.pop(); + } + s.push(str[i]); + break; + case '+': + case '-': + while (!s.empty() && s.top() != '(') { + res += s.top(); + s.pop(); + } + s.push(str[i]); + break; + case ')': + while (!s.empty() && s.top() != '(') { + res += s.top(); + s.pop(); + } + s.pop(); + break; + } + } + } + while (!s.empty()) { + res += s.top(); + s.pop(); + } + + cout << res; + + return 0; +}