https://www.acmicpc.net/problem/2548
풀이: 정렬한 뒤 가운데에 있는 값을 출력한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 #include <iostream>#include <algorithm>using namespace std; int n, i, a[20005]; int main() { cin >> n; for (i = 0; i < n; i++) cin >> a[i]; sort(a, a + n); cout << a[(n - 1) / 2] << endl; }
https://www.acmicpc.net/problem/1484
풀이: a를 1로 b를 ( n + 1)^1/2 로 초기화 시킨다.
b^2 - a^2 이 n 과 같다면, b 를 출력한다.
b^2 - a^2 이 n 보다 작다면 b 를 +1 해준다.
b^2 - a^2 이 n 이상이라면, a 를 +1 해준다.
b와 a가 같아질떄까지 반복한다.
만약 출력을 한번도 안했다면 “-1"을 출력한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <iostream>#include <math.
https://www.acmicpc.net/problem/1806
풀이: a[i] : 0 ~ i 번째 수 까지의 합
a[i] 와 a[t] 로 시작한다.
a[t] - a[i] 가 S 보다 크거나 같다면, t - i 길이의 부분합이 S 이상이 됨을 알 수 있다.
t를 1 줄이고 한번 더 반복한다.
만약, a[t] - a[i] 가 S 보다 작다면, i++, t++ 해준다.
t값이 N보다 커질때까지 반복한다.
구한 길이를 출력한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <iostream>using namespace std; int N, S, i, t, s = 0, a[100005]; int main() { cin >> N >> S; for (i = 1; i <= N; i++) { cin >> t; a[i] = a[i - 1] + t; } for (i = 0, t = N; t <= N;) if (a[t] - a[i] >= S) s = t - i, t--; else i++,t++; cout << s << endl; }
https://www.acmicpc.net/problem/10708
풀이: 게임을 진행한다.
적은 대상이 타겟이라면 적은 사람을 +1 타겟이 아니라면 타겟인 사람을 +1 해준다.
게임 이 끝난 후 각각의 친구들이 얻은 합계 점수를 각각 출력한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 #include <iostream>using namespace std; int n, m, i, t, c, a[102], b[102]; int main() { cin >> n >> m; for (; i < m; i++) cin >> a[i]; for (i = 0; i < m; i++) for (t = 0; t < n; b[c==a[i]?