전체 글

게임 만들고 싶어요
1. 문제 상세 https://www.acmicpc.net/problem/19532 2. 문제 접근 브루트 포스 단계의 문제 답게 브루트 포스 알고리즘을 사용하여 해결해보자. 이중 for문으로 x 와 y 가 -999 ~ 999인 모든 경우를 확인하며 식이 성립될 때까지 반복하자. 3. 문제 풀이 #include using namespace std; int main() { int a, b, c, d, e, f, out = 0; cin >> a >> b >> c >> d >> e >> f; for (int i = -999; i
1. 문제 상세 https://www.acmicpc.net/problem/2231 2. 문제 접근 입력받은 수 N 의 생성자를 구하자. 이를 위해 1부터 N 까지의 수들을 확인하며 그 수와 각 자릿수를 더한 값이 N이 되는 첫 번째 경우 그 수를 출력하자. 3. 문제 풀이 #include using namespace std; int main() { int n, ans = 0; cin >> n; for (int i = 1; i < n; i++) { int sum = 0, a = i; while (a != 0) { sum += a % 10; a /= 10; } if (sum + i == n) { ans = i; break; } } cout
1. 문제 상세 https://www.acmicpc.net/problem/2798 2. 문제 접근 카드 갯수 N, 숫자 M, 카드의 수들을 입력받는다. 카드 갯수는 최대 100개 까지 입력받을 수 있으므로 카드 수들을 저장할 크기 100의 정수 배열을 사용하자. 먼저 반복문을 카드 갯수만큼 반복하며 정수를 입력받아 카드 수 배열에 저장한다. 이제 모든 카드에서 세 개를 골라 더한 후 그 수가 M 보다 작거나 같은지 확인하자. 그리고 M 과 최대한 가까운지 확인하기 위해 블랙잭을 저장할 변수를 선언하여 0으로 초기화 한 후 세 카드의 합이 변수의 값보다 클 때 그 합을 변수에 저장하도록 하자. 카드 배열에서 입력한 카드 수들은 배열의 n - 1 번 인덱스 까지 저장되어 있다. 모든 카드 조합을 확인하기 위..
1. 문제 상세 https://www.acmicpc.net/problem/24313 2. 문제 접근 a1, a0, c, n0 을 입력받고 각 수식을 비교하고 결과를 출력. a1 * n + a0 값이 c * n 값보다 작거나 같으면 1을, 아니라면 0을 출력한다. 여기서 주의할 사항이 있다. 만약 a0 가 음수가 되는 경우, n0 에서는 조건이 성립하지만 다른 n 의 경우에 위의 조건이 성립되지 않는 경우가 있다. a1 = 5, a0 = -4, c = 3, n0 = 1 이라고 가정하자. 5n - 4 ≤ 3n 에서 n0 가 1이고 1 ≤ 3 이므로 식이 성립한다. 하지만 n 이 3이 된다면 11 ≤ 9 가 되어서 조건이 성립하지 않게 된다. 따라서 a0 가 음수인 경우에 a1 *n 가 c * n 보다 항삭 ..
1. 문제 상세 https://www.acmicpc.net/problem/24267 2. 문제 접근 주어진 알고리즘을 보고 수행 횟수를 확인해보자. 이를 위해 예제를 통해 루프에서 i 와 j 의 상태를 확인해보자. i j k 1 2 3, 4, 5, 6, 7 3 4, 5, 6, 7 4 5, 6, 7 5 6, 7 6 7 2 3 4, 5, 6, 7 4 5, 6, 7 5 6, 7 6 7 3 4 5, 6, 7 5 6, 7 6 7 4 5 6, 7 6 7 5 6 7 수행 횟수가 (5 + 4 +3 + 2 + 1) + (4 + 3 + 2 + 1) + (3 + 2 + 1) + (2 + 1) + 1 번 이라는 것을 알 수 있다. 이를 시그마 공식으로 변환하면 위와 같은 식으로 계산한다. 따라서 시간복잡도는 O(N3)이 되고..
1. 문제 상세 https://www.acmicpc.net/problem/24266 2. 문제 접근 이번 문제의 알고리즘은 입력값 n 이 있을 때 수행 횟수가 n3 번이 된다. 따라서 시간 복잡도는 O(N3) 이 된다. 입력 받은 n 의 세제곱값과 최고차항의 차수인 3을 출력하자. *변수에 들어갈 수 있는 최대값이 50만의 세제곱이기 때문에 int 형의 범위(약 -21억 ~ 21억)를 넘는다. 따라서 long 또는 long long 형으로 변수를 선언하여 사용하자. 3. 문제 풀이 #include using namespace std; int main() { long n; cin >> n; cout
Dry_p
건조한 프로그래밍