-
[BOJ] 12025 : 장난꾸러기 영훈
12025 : 장난꾸러기 영훈 풀이 아 9시 수업 에반데 코드 #include <stdio.h> long long i, k; char s[66]; int main() { scanf("%s %lld", s, &k); k--; for (i = 0; s[i]; i++) { if (s[i] == '6' || s[i] == '7') s[i] -= 5; } while (i--) { if (s[i] == '1' || s[i] == '2') { if (k & 1) s[i] += 5; k >>= 1; } } puts(k ? "-1" : s); return...
-
[BOJ] 2212 : 센서
2212 : 센서 풀이 각각의 좌표들을 정렬해보자. 그리고 인접한 좌표들의 거리 차이를 구해보자. 그리고 그 거리 차이를 다시 정렬해보자. k개의 집중국, 다시 말해 k개의 직선을 놓는다면 k-1개의 빈 공간(?)이 생기게 만들 수 있다. 그러므로 방금 정렬한 거리 차이 중에서 가장 큰 값을 k-1개 고르면 집중국이 차지하는 영역(?)의 합이 최소가 될 것이고 답을 구할 수 있다 (!!) 코드 #include <stdio.h> #include <algorithm> int n, k, ans, a[10001]; int main() { scanf("%d %d", &n, &k); for (int...
-
[BOJ] 1969 : DNA
1969 : DNA 풀이 음 사실 그리디인지는 잘 모르겠고 그냥 나이브하게 짜면 된다. 코드 #include <stdio.h> int n, m, d, cnt[51][26]; char s[1001][51], r[1001]; int main() { scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) { scanf("%s", s[i]); for (int j = 0; j < m; j++) cnt[j][s[i][j] - 'A']++; } for (int i = 0; i < m; i++) { int mx = 0; for (int j = 0;...
-
[BOJ] 2217 : 로프
2217 : 로프 풀이 로프의 무게를 내림차순으로 정렬해서 무게를 달아보자! i번째 로프에 걸리는 중량은 weight / i이다. 가장 튼튼한 로프에 걸리는 중량을 w[1]이라고 할 때 w[i] (i != 1)은 항상 w[1]보다 작으므로 중량을 하나씩 걸어보면서 max값을 찾으면 된다. 코드 #include <stdio.h> #include <algorithm> int main() { int n, i, a[100001], k = -1; scanf("%d", &n); for (i = 0; i < n; ++i) scanf("%d", &a[i]); std::sort(a, a + n); for (i = 0; i <...
-
[BOJ] 1793 : 타일링
1793 : 타일링 풀이 타일링 가즈아~~~!!! 코드 #include <iostream> #include <string> #include <algorithm> using namespace std; int n; string dp[255] = { "1", "1" }; string deohagi(string a, string b) { int sum = 0; string res; while (!a.empty() || !b.empty() || sum) { if (!a.empty()) sum += a.back() - '0', a.pop_back(); if (!b.empty()) sum += b.back() - '0', b.pop_back(); res.push_back((sum % 10) + '0'); sum /= 10; } reverse(res.begin(), res.end()); return res; } int...