목록Algorithm (151)
자이의 프로그래밍
역순으로 정렬해주고 k번만큼 더해주었다. #include #include #include #include using namespace std; int main() { int tc; cin >> tc; for (int T = 1; T > n >> k; vector v; for (int i = 0; i > tmp; v.push_back(tmp); } sort(v.rbegin(), v.rend()); int sum = 0; for (int i = 0; i < k; i++) { sum += v[i]; } cout
숫자를 이어붙였다. 맵의 범위를 벗어나면 다시 찾게 했고 총 7자리의 수를 찾았을 때 체크해주면서 찾은 수를 하나씩 더해주었다. #include #include using namespace std; int ch[10000100]; int arr[10][10]; int total = 0; int dx[] = { 1, 0, -1, 0 }; int dy[] = { 0, 1, 0, -1 }; void checking(int x, int y, int cnt, int val) { if (cnt == 7) { if (ch[val] != 1) { ch[val] = 1; total += 1; } return; } for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y..
char로 문자형으로 배열을 받은 후에, 네 면을 서치하면서 16진수를 확인하며 int형 변수에 해당 값을 변환하며 넣어주었다. 그 이후에 네 면을 확인하는 것이 끝나면 큐의 맨 마지막 수로 시작할 수 있게끔 큐의 수 -1만큼 뒤에 붙여줍니다. #include #include #include #include using namespace std; int main() { int tc; cin >> tc; for (int T = 1; T > n >> K; queue q; for (int i = 0; i > tmp; q.push(tmp); } vector v; for (int i = 0; i < n / 4; i++) { for (int j = 0; j < 4; j..
칠할 수 있는 모든 경우를 만들어서 비교해주었다. #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..