#1037: 약수
[문제]

[코드]
#include<stdio.h>
int main()
{
int a[50] = { 0 }, n, N;
int max = 1, min = 1000000;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", a + i);
for (int i = 0; i < n; i++)
{
max = (*(a + i) > max) ? *(a + i) : max;
min = (*(a + i) < min) ? *(a + i) : min;
}
N = max * min;
printf("%d\n", N);
return 0;
}
[코드설명]
어떤 정수 N의 약수는 1과 자기 자신을 제외했을 때 제일 작은 약수와 제일 큰 약수를 곱하면 자기 자신이 된다. 따라서 약수를 입력 받고, 입력 받은 약수 중 가장 큰 값과 가장 작은 값을 각각 max와 min에 저장하고 곱했다.
[채점 결과]

#1712: 손익분기점
[문제]

[코드]
#include<stdio.h>
int main()
{
int A, B, C, n;
scanf("%d %d %d", &A, &B, &C);
if (B >= C) printf("-1\n");
else printf("%d\n", A / (C - B) + 1);
return 0;
}
[코드설명]
처음엔 A + B*n < C*n 이 식을 사용해서 while문으로 n을 하나씩 증가시켜서 풀었는데 채점 결과 정답이 아니었다. 그래서 이 식을 n에 대하여 정리한 A / (C-B) < n 해당 식을 사용해서 풀었다.
B가 C보다 크거나 같으면 손익분기점이 생길 수 없으므로 -1을 출력하고, C가 B보다 크면 A / (C-B) 값에 ceil을 취해서 출력했다. 이때 A, B, C가 정수라서 ceil 함수를 사용하지 않고 1을 더해줬다.
[채점 결과]

'알고리즘' 카테고리의 다른 글
| [BOJ] 2748/2750 (0) | 2021.02.01 |
|---|---|
| [BOJ] 2941/2884 (0) | 2021.01.26 |
| C 과제 1/2 (0) | 2021.01.11 |
| [BOJ] 10809/10773 (0) | 2021.01.07 |
| [SWEA] 8821/8741 (0) | 2020.11.28 |