[BOJ] 3036번: 링 https://www.acmicpc.net/problem/30361번 링의 반지름이 R1이라면 기약분수로 R1/r 들을 출력하면 된다.소스코드123456789101112131415#include inline int gcd(int a, int b) { return b ? gcd(b, a % b) : a; } int main(){ int n, first; scanf("%d %d", &n, &first); for (int i = 0, a; i 온라인저지 2018.07.26
[BOJ] 1182번: 부분집합의 합 https://www.acmicpc.net/problem/1182모든 경우를 다 탐색하면 된다. 재귀 호출을 통해 풀 수도 있고 n이 20으로 작기 때문에 비트마스크를 이용해서 해결할 수 있다.재귀 호출을 통해 문제를 푸는 경우 -> 현재 이 인덱스의 값을 더하거나 안 더하거나(인덱스만 증가시키거나)로 전체를 탐색할 수 있다. 정말 뻘짓을 많이 해서 친구의 도움을 많이 받았는데 연습 밖에는 답이 없는 듯하다. 소스코드비트 마스크12345678910111213141516#include int main(){ int N, S, arr[20], count = 0; scanf("%d%d", &N, &S); for (int i = 0; i 온라인저지 2018.07.26
[BOJ] 14650번: 걷다보니 신천역 삼 (Small) 14650번: 걷다보니 신천역 삼 (Small) 14650번: 걷다보니 신천역 삼 (Small) 욱제는 ‘삼’이란 음절을 참 좋아한다. 인삼, 홍삼, 해삼, 삼성, 이춘삼(李春森), 삼식이, 삼시세끼, ㄴㄴ 그거 안 삼, 삼과 죽음, 알았삼, 금강삼도 식후경, 걷다보니 신천역 삼, 그리고 특히 일이삼을 좋아한다. 그래서 욱제는 3을 가지고 놀아보기로 했삼. 3개 숫자(0, 1, 2)만 가지고 N자리 3의 배수를 만들어 보삼. 만드는 배수는 자연수 이삼. 0으로 시작하는 수는 만들 수 없는 수 이삼. 3의 배수가 몇 개나 나올 수 있삼? www.acmicpc.net N의 최대 크기가 9이기 때문에 brute force를 해도 되지만 간단한 dp 문제로 풀 수 있다. 참고: 14651번: 걷다보니 신천역 삼.. 온라인저지 2018.07.19
[BOJ] 14652번: 나는 행복합니다~ 14652번: 나는 행복합니다~ 다행히 관중석이 직사각형이라 나누기와 나머지 연산을 잘 써주면 된다. 코드 #include int main() { int n, m, k; scanf("%d %d %d", &n, &m, &k); printf("%d %d", k / m, k % m); return 0; } 온라인저지 2018.07.19
[BOJ] 1011번: Fly me to the Alpha Centauri 1011번: Fly me to the Alpha Centauri 이동 횟수와 거리 간의 관계가 있다. 이동 횟수 거리 표시 이동 가능 거리 1 1 1 2 1 1 2 3 1 2 1 3 - 4 4 1 2 2 1 5 - 6 5 1 2 3 2 1 7 - 9 6 1 2 3 3 2 1 10 - 12 예를 들어 우리가 5만큼의 거리를 간다고 하자. 그렇다면 우리는 4번만 이동하면 된다. 규칙을 잘 찾아서 구현을 해주면 완성이다. 코드 #include int t; int main() { scanf("%d", &t); while (t--) { int d, a; // departure, arrival; scanf("%d %d", &d, &a); for (int i = 1;; ++i) if (a - d 온라인저지 2018.07.19
[BOJ] 14651번: 걷다보니 신천역 삼 (Large) 14651번: 걷다보니 신천역 삼 (Large) 이기 때문에 처음에는 코드를 이렇게 짰다. #include long long n, dp[33334][3]; const int R = 1e9 + 9; int main() { scanf("%lld", &n); dp[2][0] = 0, dp[2][1] = dp[2][2] = 1; for (int i = 3; i 온라인저지 2018.07.19
[BOJ] 1193번: 분수찾기 1193번: 분수찾기 많이 비효율적인 코드이긴 한데... 내일 다시 풀어보도록 하자. 코드 #include using namespace std; int main() { ios_base::sync_with_stdio(false), cin.sync_with_stdio(false); int n, i; cin >> n; for (i = 1; (i * i + i) / 2 < n; ++i) { } int tmp = ((i - 1) * (i)) / 2, s, f; if (i & 1) { s = i, f = 1; while (tmp != n - 1) s--, f++, tmp++; } else { s = 1, f = i; while (tmp != n - 1) s++, f--, tmp++; } cout 온라인저지 2018.07.19
[BOJ] 3053번: 택시 기하학 3053번: 택시 기하학 유클리드 기하학에서 원의 넓이: 택시 기하학에서 원은 정사각형 꼴이다. 그래서 한 변의 길이는 이고 따라서 넓이는 코드 #include #define _USE_MATH_DEFINES #include int main() { double R; scanf("%lf", &R); printf("%.6lf\n%.6lf", R * R * M_PI, R * R * 2.0); return 0; } 온라인저지 2018.07.19
[BOJ] 3052번: 나머지 3052번: 나머지 배열을 써서 확인하자. 코드 #include bool chk[42]; int main() { int count = 0; for (int i = 0, a; i < 10; ++i) { scanf("%d", &a); if (!chk[a % 42]) ++count; chk[a % 42] = true; } printf("%d\n", count); return 0; } 온라인저지 2018.07.19