728x90
백준에서 가장 많이 풀린 문제 TOP 100 중 한 문제
1월 20일에 파이썬으로 풀어보고
n = int(input())
five = n // 5
three = 0
find = False
while five >= 0:
if five * 5 + three * 3 == n:
find = True
break
while five * 5 + three * 3 <= n:
if five * 5 + three * 3 == n:
find = True
break
three += 1
if find:
break
five -= 1
if find:
print(five + three)
else:
print(-1)
두 달 반 후인 4월 6일에 또 다시 풀어보았다.
이번에는 C++로 풀어봤다.
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int count = 0;
while (true) {
if (n < 0)
break;
if (n % 5 == 0)
break;
else {
n -= 3;
count++;
}
}
if (n < 0) cout << -1;
else cout << count + n / 5;
return 0;
}
3kg 짜리 설탕을 최대한 적게 쓰고 5kg 짜리 설탕을 최대한 많이 써야되기 때문에 n이 5로 나눠떨어질 때까지 3을 빼주었다. 빼 줄 때마다 3kg짜리 설탕을 한 봉지 사용하는 것이기 때문에 count 변수에 1씩 더해주었다. 그 과정에서 n이 음수가 되면 바로 while문을 빠져나와 -1을 출력하게 했고 5로 나눠떨어지면 while문을 빠져나와 count와 n/5를 더해주었다. count는 3kg짜리 설탕의 개수이고 n / 5는 5kg짜리 설탕의 개수이다. 그 둘을 더해주면 된다.
728x90
'알고리즘 문제' 카테고리의 다른 글
[백준] 5622번 다이얼 (0) | 2020.01.20 |
---|---|
[백준] 1316번 그룹 단어 체커 (0) | 2020.01.20 |
[백준] 4344번 평균은 넘겠지 (0) | 2020.01.20 |
[백준] 10172번 개 (0) | 2020.01.20 |
[백준] 10988번 팰린드롬인지 확인하기 (0) | 2020.01.19 |