https://www.acmicpc.net/problem/12779
풀이: 약수의 갯수가 홀수라는 것은 “제곱수” 라는 것을 의미한다.
그러므로 제곱수의 갯수 / 전체 갯수를 한다면 답을 구할 수 있다.
주의
확률이 0일 경우 0을 출력해야한다. 2^60 까지의 숫자이므로 int형에 들어갈 수 없다. 기약분수로 출력해야하므로 최대 공약수로 나누어주는 작업을 해주자. 코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <iostream>#include <math.
https://www.acmicpc.net/problem/12780
풀이: H의 1번 문자열부터 끝까지 검사하며 N이 몇 번 등장하는지 확인한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <iostream>#include <string>using namespace std; int main() { string s, a; int c = 0; cin >> s >> a; for (int i = 0; i <= s.length() - a.length(); i++) { if (s.substr(i, a.length()) == a) c++; } cout << c << endl; }
https://www.acmicpc.net/problem/1388
풀이: 같은 행에 연속된 ‘-’ 이 몇 쌍이 있는지 센다.
같은 방식으로
같은 열에 연속된 ‘|’ 이 몇 쌍이 있는지 센다.
두 수를 더하여 출력한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <iostream>using namespace std; int n, m, i, t, c; string s[105]; int main() { cin >> n >> m; for (; i < n; i++) cin >> s[i]; for (i = 0; i < n; i++) for (t = 0; t < m; t++) { if (s[i][t] == '-')if (t == m - 1 || s[i][t + 1] == '|')c++; if (s[i][t] == '|')if (i == n - 1 || s[i + 1][t] == '-')c++; } cout << c << endl; }
https://www.acmicpc.net/problem/1356
풀이: 1의 자릿수 == 10의 자릿수*…*n자릿수
1의 자릿수 * 10의 자릿수 == 100의 자릿수 *…*n자릿수
.
.
.
1의 자릿수*…*n-1자릿수 == n 자릿수
중 앞의 값과 뒤의 값이 같은 것이 하나라도 있다면, YES를
하나도 없다면 NO를 출력한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 #include <iostream>using namespace std; int n = 1, m = 1, i, t, f; string s; int main() { cin >> s; for (i = 1; i < s.
https://www.acmicpc.net/problem/1268
풀이: 현재 상태에서 제일 많은 학생수를 S, 그 학생수를 가진 학생을 C라고 하자.
1번 학생이 몇 명의 학생과 같은 반을 했었는지를 저장하고,
그 값이 S보다 많다면 S를 교체하고 C에 1을 저장한다.
.
.
.
n번 학생이 몇 명의 학생과 같은 반을 했었는지를 저장하고,
그 값이 S보다 많다면 S를 교체하고 C에 n을 저장한다.
전체를 다 탐색 한 후 C를 출력한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <iostream>using namespace std; int n, i, t, y, d, s, c, a[1005][5], b[1005][1005]; int main() { cin >> n; for (; i < n; i++) for (t = 0; t < 5; t++) cin >> a[i][t]; for (i = 0; i < n; i++, d = 0) { for (t = 0; t < 5; t++) for (y = 0; y < n; y++) if (a[i][t] == a[y][t])d += !
https://www.acmicpc.net/problem/1236
풀이: 각 행에 경비병이 있는지 없는지 탐색한다.
경비병이 없는 행의 갯수를 Sn이라고 하자.
각 열에 경비병이 있는지 없는지 탐색한다.
경비병이 없는 열의 갯수를 Sm이라고 하자.
각 행과 열에는 경비병이 1명씩은 있어야 하므로
Sn과 Sm 중 최댓값을 출력한다.
코드: 사용언어 : c++
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <iostream>using namespace std; int n, m, i, t, a[55], b[55], q, w; char c; int main() { cin >> n >> m; for (; i < n; i++) for (t = 0; t < m; t++) { cin >> c; if (c == 'X') q+=!