/images/logo.png

[백준]12779 상품 is 뭔들

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.

[백준]12780 원피스

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; }

[백준]1388 바닥 장식

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; }

[백준]1356 유진수

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.

[백준]1268 임시 반장 정하기

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 += !

[백준]1236 성 지키기

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+=!