본문 바로가기

문제 풀이262

[C] 백준 2231번 : 분해합 www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 문제 접근 1. 입력받은 값의 자릿수를 구한다. 2. 입력받은 값에서 자릿수*9한 값부터 따져서 가장 처음 걸리는 조건이 최솟값, 없으면 0을 출력 느낀점 처음에 백만까지 입력을 받았을 경우 어떻게 해야하나 고민을 많이 했다. 고민 끝에 분해합은 원래 숫자에서 각 자릿수를 더하는 것이기 때문에 한 자릿수당 최대 9만큼 빠질 수 있다. 따라서, n자릿수라고 했을 때 제일 작은 생성자는.. 2021. 4. 6.
[C] 백준 2798번 : 블랙잭 www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 문제 접근 1. 시행횟수가 최대 100회 밖에 안되기 때문에 각 경우를 모두 따질 수 있다. 2. 받은 카드의 숫자를 배열에 모두 넣어 경우를 따질 준비를 한다. 3. 배열 idx 0부터 n-1까지 처음 숫자부터 다다음까지 더한 값을 하나하나 따진다. 4. m보다 작거나 같고 현재 최댓값보다 큰 값을 출력한다. 느낀점 생각보다 어렵지 않은 문제였다. 분명히 맞았는데 출력이 안되서.. 2021. 4. 3.
[C] 백준 2447번 : 별 찍기 - 10 www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 문제 접근 1. 3의 7제곱인 2187 크기의 배열을 초기화 한다. 2. 구멍이 뚫리는 위치는 입력값 n(3의 제곱수)에 대해서 n/3부터 n/3개 (ex. n이 9이면 출력은 9x9 크기에서 3부터 3개 즉, 3x3 위치부터 5x5 위치까지 뚫림) 3. 입력값 n의 n/3이 1이 아니면 다시 별을 찍는 함수를 불러온다. 느낀점 처음에 접근이 어려워서 다른 분들의 코드를 살펴보았다. .. 2021. 3. 27.
[C] 백준 10870번 : 피보나치 수 5 www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 문제 접근 1. 숫자 입력받고 함수 출력 느낀점 기본이라서 느낄 것이랄 것도 없다. 코드 #include int fibo(int n) { if (n == 0) return 0; if (n == 1) return 1; return fibo(n - 1) + fibo(n - 2); } int main() { int n; scanf("%d", &n); printf("%d", fi.. 2021. 3. 24.
[C] 백준 10872번 : 팩토리얼 www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 접근 1. 반복 횟수를 받고 팩토리얼 실행 느낀점 사실 너무 기본이라서 느낄 것도 없었다! 오늘은 1일 2코딩 코드 #include int factorial(int n) { if (n == 0) return 1; return n * factorial(n - 1); } int main() { int n; scanf("%d", &n); printf("%d", factorial(n)); return 0; } 2021. 3. 24.
[C] 백준 1002번 : 터렛 www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 문제 접근 1. 반복 횟수와 x1,x2,y1,y2,r1,r2를 받는다. 2. 교차 점이 두개인 경우 중심 사이 거리가 두 반지름의 합보다 작고 중심 사이 거리가 두 반지름의 차보다 크다. 3. 한개인 경우 중심 사이의 거리와 두 반지름의 합이 같거나(외접) 중심 사이의 거리와 두 반지름의 차와 같다(내접). 4. 중심점이 같고 반지름이 같으면 무수히 많고, 중심점이 같은데 반지름이 다르면 아예 없다. 느낀점 되게 쉽네 하면서 풀었지만 내접의 경우를 생각하지 못하고.. 2021. 3. 23.