본문 바로가기

algorithm

(54)
백준 1914 : 하노이 탑 https://www.acmicpc.net/problem/1914 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라...
백준 9020 : 골드바흐의 추측 https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, ..
바킹독 (배열, 백준) 13300 #include using namespace std; int arr[2][7]; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n, k; cin >> n >> k; for (int i = 0; i > a >> b; arr[a][b]++; } int ans = 0; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 7; ++j) { ans += arr[i][j] / k; if (arr[i][j] % k) ans++; } } cout
바킹독 (배열, 백준) 11328 #include using namespace std; int check[27]; int check2[27]; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; while (n--) { fill(check, check + 26, 0); fill(check2, check2 + 26, 0); string a, b; cin >> a >> b; int cmp = 0; int flag = 0; for (int i = 0; i < a.length(); i++) check[a[i]- 'a']++; for (int i = 0; i < b.length(); i++) check2[b[i] - 'a']++; for (int i = 0; i < 26;..
바킹독 (배열, 백준) 10808 #include using namespace std; char arr[26]; int check[26]; int main(void) { ios::sync_with_stdio(0); cin.tie(0); string s; cin >> s; char tmp = 'a'; for (int i = 0; i < 26; i++) arr[i] = tmp++; for (int i = 0; i < s.length(); i++) { char tmp = s[i]; for (int j = 0; j < 26; j++) if (s[i] == arr[j]) check[j] += 1; } for (int i = 0; i < 26; i++) cout
바킹독 (배열, 백준) 10807 #include using namespace std; int arr[201]; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for (int i = 0; i > tmp; arr[tmp + 100]++; } int x; cin >> x; cout
바킹독 (배열, 백준) 3273 #include using namespace std; bool check[2000001]; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; int arr[n]; fill(arr, arr + n, 0); for (int i = 0; i > tmp; arr[i] = tmp; check[tmp] = 1; } int cmp; int ans = 0; cin >> cmp; for (int i = 0; i 0 && check[cmp - arr[i]]) ans++; } cout
바킹독 (배열, 백준) 2577 #include using namespace std; int arr[10]; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int a, b, c; long long sum; cin >> a >> b >> c; sum = a * b * c; while (sum) { arr[sum % 10] += 1; sum /= 10; } for (int i = 0; i < 10; i++) cout
바킹독 (배열, 백준) 1919 #include using namespace std; int check1[27]; int check2[27]; int main() { ios::sync_with_stdio(0); cin.tie(0); string a, b; cin >> a >> b; for (int i = 0; i < a.length(); i++) check1[a[i] - 'a']++; for (int i = 0; i < b.length(); i++) check2[b[i] - 'a']++; int ret = 0; for (int i =0; i< 26; i++) { if (check1[i] != check2[i]) { int l = max(check1[i], check2[i]); int s = min(check1[i], check2[i])..
바킹독 (배열, 백준) 1475 #include using namespace std; int arr[10] = {}; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n; int ret = 1; cin >> n; while (n) { arr[n % 10]++; n /= 10; } for (int i = 0; i < 10; i++) { if (i == 6 || i == 9) continue ; ret = max(ret, arr[i]); } ret = max(ret, (arr[6] + arr[9] + 1) / 2); cout