본문 바로가기

전체 글408

[C] 백준 1085번 : 직사각형에서 탈출 www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 접근 1. 4가지 경우(왼쪽, 오른쪽, 위, 아래 경계선)을 나누고 그 중 최소값을 출력 느낀점 생각보다 너무 쉬워서 당황한 문제. 사실 대각선도 따져야하나 했지만 생각해보니 직선 거리가 최소일 수 밖에 없음! 코드 #define _CRT_NO_SECRUE_WARNING_ #include #define min(x,y) x>y ? y : x int main() { int x, y, w, h; s.. 2021. 3. 19.
[C] 백준 9020번 : 골드바흐의 추측 www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 문제 접근 1. 입력받은 숫자가 짝수면 반복을 시작 2. 입력받은 숫자(n)의 반부터 시작해서 하나씩 숫자를 늘려 처음 찾은 소수(j)와 n-j가 소수인지 확인 느낀점 처음에는 되게 난해했지만 이미 골드바흐의 추측대로 소수+소수가 우리가 입력한 숫자라는 사실과 입력받은 숫자의 반에서 가장 가까운 소수가 그 소수를 뺀 값이 결국 두 수 차이의 최소라는 점을 이해해서 생각보다 쉽게 풀었다. 하지.. 2021. 3. 18.
[C] 백준 4948번 : 베르트랑 공준 www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 문제 접근법 1. 에라토스테네스의 체를 이용해서 최대 범위까지의 소수를 구한다. (배열을 활용) 2. n을 입력받고 주어진 범위 내의 소수의 갯수를 카운트해서 출력 느낀점 처음에 단순하게 함수를 만들어서 n 값을 입력 받을 때마다 계산하는 쪽으로 생각했다. 하지만 주어진 시간은 1초였고 찾아보니 에라토스테네스의 체라는 소수 찾는 알고리즘이 있었다. 이번 기회로 새로운 알고리즘을 공부했지만 계속 소수 문제.. 2021. 3. 17.
[C] 백준 1929번 : 소수 구하기 www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 문제 접근법 1. 자연수 m과 n을 입력 받는다. 2. 소수를 판별하는 함수를 통해서 m과 n 사이의 값들이 소수인지 확인한다. 3. 소수가 맞으면 출력 느낀점 단계별로 문제를 풀이하다보니 이전의 소수 판별 문제와 매우 비슷해서 매우 쉬웠다. 코드 #include bool isPrime(int n) { if (n 2021. 3. 16.
그 동안의 1일 1코딩 실천 20.11.12 #include int main() { int A, B, C; int arr[10] = {}; scanf("%d%d%d",&A, &B, &C); int temp = A * B * C; while (temp != 0) { arr[temp % 10]++; temp /= 10; } for (int i = 0; i < 10; i++) { printf("\n%d", arr[i]); } return 0; } 20.11.16 #define _CRT_SECRUE_NO_WARNING_ #include int main() { int Case, N; // Case = 총 경우, N = 학생 수 double average; scanf("%d", &Case); for (int i = 0; i < Case;i++.. 2021. 3. 15.
[C] 백준 11653번 : 소인수분해 www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 문제 접근법 단계별로 분류해서 접근했다. 1. 나누는 숫자가 소수인지 판단 2. 소수가 맞다면 주어진 N을 나눴을 때 나머지가 없다면 N = N / div하고 출력 아니라면 div++ 3. 나누다가 N이 1이라면 종료 느낀점 생각한 접근법으로 시도했는데 맞게 나오지만 시간 초과... 전에 소수문제가 나와서 소수인지를 꼭 판단해야할 줄 알았는데 그게 아니었다. 이후 코드를 최소화 하고 재도전했는데 성공! 아직 코드가 깔끔하지 않은 것 같다. 코드 #include int main() { int n, i = 2; scanf("%d", .. 2021. 3. 15.