목록Algorithm/Cases-BOJ (67)
자이의 프로그래밍
칠할 수 있는 모든 경우를 만들어서 비교해주었다. #include #include #include using namespace std; char arr[60][60]; int cnt=2147000000; char wstart[8][8]={ {'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B'}, {'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W'}, {'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B'}, {'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W'}, {'W', 'B', 'W', 'B', 'W', 'B', 'W', 'B'}, {'B', 'W', 'B', 'W', 'B', 'W', 'B', 'W'}, {'W', 'B', '..
DP 문제로 정해진 규칙을 활용해 메모이제이션으로 해결했다. #include using namespace std; int d[50][50]; int checking(int n, int m) { if (d[n][m] > 0) return d[n][m]; if (n == m) return d[n][m] = 1; else if (n > m) { return d[n][m] = 0; } else if (n == 1) { return d[n][m] = m; } else { for (int k = m - 1; k >= n - 1; k--) { d[n][m] += checking(n-1, k); } return d[n][m]; } } int main() { int tc; cin >> tc; for (int T = 1;..
정렬을 한 뒤에 작은 수부터 차례로 세개까지 곱한 것이 (서로 서로소일경우) 최댓값이라고 하였다. 2부터 해당 숫자까지 반복하면서 나눠떨어지는 숫자들이 3개 이상이면 출력한 뒤 마쳤다. #include #include #include using namespace std; int main() { vector a; for (int i = 0; i > val; a.push_back(val); } sort(a.begin(), a.end()); int maxi = a[0] * a[1] * a[2]; for (int i = 2; i = 3) { cout
큐를 활용해서 진행했다. 제일 처음에 들어온 수를 ch 배열에 1로 선언해주고 계속 반복하다가 해당 수가 ch 배열에 1로 들어와있다면 반복문을 빠져나갔다. #include #include #include #include #include using namespace std; int ch[110]; int main() { int n; cin >> n; queue q; q.push(n); ch[n] = 1; int cnt = 0; while (!q.empty()) { int x = q.front(); q.pop(); if (ch[x]==1&&cnt>0) break; int existnum; int newnum = 0; if (x < 10)existnum = x; else existnum = x % 10; i..
문자열의 길이를 len에 저장하고 하나의 문자열을 기준으로 하여 다른 문자열들과 다르면 ?표시를 해주고 같다면 해당 문자로 ans라는 문자형 배열에 넣어주었다. #include #include #include #include using namespace std; char arr[60][60]; int main() { int n; cin >> n; for (int i = 0; i > arr[i]; } int len = strlen(arr[0]); char ans[60]; for (int i = 0; i < len; i++) { char tmp = arr[0][i]; int status = 0; for (int j = 1; j < n; j++) { if (tmp != arr[j..
문제 문자열 A와 B가 주어질 때, 문자열 B가 문자열 A에 포함되어 있는지를 조사하는 프로그램을 작성하시오. 단, 문자열 A와 B에는 알파벳으로만 이루어져 있으며, 공백은 포함되지 않는다고 가정한다. 입력 첫 번째 줄에 문자열 A, 두 번째줄에 문자열 B가 주어진다. 각각의 길이는 1,000을 넘지 않는다. 두 문자열은 모두 소문자 알파벳으로만 구성되어있다. 출력 문자열 B가 문자열 A에 포함되면 YES, 아니면 NO를 출력한다. 예제 입력 watermelon melon 예제 출력 YES -------------------------------------------------------------------------------------------------------------------------..
문제 n개의 문자열이 주어질 때, 이 문자열을 사전순으로 빠른 순서대로 정렬하는 프로그램을 작성하시오. 입력 첫 번째 줄에 문자열의 개수 n이 주어진다 ( 1 ≤ n ≤ 100 ) 그 후 n개의 줄에 대하여 정렬하고자 하는 문자열이 주어진다 ( 1 ≤ 문자열의 길이 ≤ 100 ) 출력 문자열을 사전순으로 빠른 순서대로 정렬한 결과를 출력한다. 예제 입력 9 acid apple banana acquire cat crop crab power cat 예제 출력 acid acquire apple banana cat cat crab crop power -------------------------------------------------------------------------------------------..
문제 문자열의 길이가 굉장히 길 경우, 이를 압축하여 짧게 만들어야 할 때가 종종 있다. 이 문제에서는 문자열이 주어졌을 때, 같은 알파벳이 연속된 부분 문자열을 압축하여 결과를 출력하는 프로그램을 작성한다. 예를 들어, 문자열이 AAABBBBBCCCCDDDDEFFF 라고 하자. 이 문자열을 압축하면, 연속으로 같은 문자가 나오는 부분에, 그 문자가 몇번 나왔는지를 적어줌으로써 압축한다. 즉, 이 문자열은 3A5B4C4DE3F 로 압축된다. E는 1개밖에 없기 때문에 따로 1을 적어주지 않는다. 입력 첫 번째 줄에 압축하고자 하는 문자열이 주어진다. 문자열의 길이는 1000보다 작다. 문자열에 구성된 알파벳은 대문자다. 출력 문자열을 압축한 결과를 출력한다. 예제 입력 AAABBBBBCCCCDDDDEFF..