반응형
#include <iostream>
using namespace std;
int main() {
int f=0, t=0, n;
cin >> n;
while (n>0)
{
if (n % 5 == 0 || (n % 5 == 0 && n % 3 == 0)) {
n -= 5;
f++;
}
else if (n % 3 == 0) {
n -= 3;
t++;
}
else if (n > 5)
{
n -= 5;
f++;
}
else if (n > 3)
{
n -= 3;
t++;
}
if (n < 3&&n!=0) {
cout << -1;
break;
}
else if (n == 0) {
cout << f + t << endl;
}
}
}
풀이: while 문을 사용해서 조건이 참이면 카운트를 해서 값을 출력하는 방식으로 계산했습니다.
1. 입력된 수가 5로 나누어 떠떨어지거나 3 과 5 모두 나머지가 0이 되는 수가 아니라면 5를 뺍니다.
2. 수가 3으로 나누어 떨어지지만 위 조건을 만족하지 못하면 (else if) 3을 뺍니다.
3. 만약 수가 3보다 작아 더 이상 진행할 수 없으면 -1을 출력하고 반복을 탈출합니다.
4. 입력된 수가 0이 되면 나눴던 프로세스를 모두 더해서 값을 출력합니다.
다른 사람에 코드
#include<stdio.h>
int main(){
int n,i=0;scanf("%d",&n);
while((n-3*i)%5)
{
i++;
if(3*i>n){printf("-1");return 0;}
}
printf("%d",(n-3*i)/5+i);
}
풀이: 나눈 횟수를 카운트 해서 n의 값은 변경하지 않고 n의 3에 배수를 빼고 5로 나머지를 구합니다. 그 수가 0이 되면 반복이 종료가 됩니다. 그 수가 n 보다 커지면 나누어 떨어지지 않는 수이므로 -1을 리턴하고 종료하고 만약 0으로 나누어 떨어진다면 while문이 종료되고 n - 반복한수 *3 / 5+ 반복한 수 를 출력합니다.
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준] 2525 - 오븐 시계 (0) | 2023.01.11 |
---|---|
[백준] 2884 - 알림시계 (0) | 2023.01.10 |
14681 - 사분면 고르기 (1) | 2023.01.08 |
[백준] 2753 - 윤년 (0) | 2023.01.07 |
[백준] 2775 - 부녀회장이 될테야 (0) | 2023.01.06 |