티스토리 뷰
#include <iostream>
using namespace std;
int solve(int n) {
int sum = 0;
int min = 0;
if (n == 4 || n == 7) return -1;
while (1) {
while (sum <= n) { //최대한 5kg로 채워본다
sum += 5; min++;
if (sum == n) return min;} //값이 일치할시 끝
while (sum > n) { sum -= 5; min--;} //만약 넘었다면 5kg을 빼준다.
while (sum <= n) { //3kg을넣는다.
sum += 3;
min++;
if (sum == n) return min; ///값 일치할시 끝
}
}
}
int main(void) {
int N;
cin >> N;
cout << solve(N);
}
로직
1) 자루의 무게가 N보다 작거나 같을 때 까지 5 kg로 자루를 다 채워본다
->자루의 무게가 N과 같다면 ->종료
2)자루의 무게가 N보다 크다면 -> 자루의 무게가 N보다 작거나 같아질 때 까지 자루에서 5kg를 뺀다.
3)자루의 무게가 N보다 작거나 같을 때 까지 3kg를 추가한다.
-> 자루의 뭬가 N과 같다면 -> 종료
-> 자루의 무게가 N보다 커지게 되었다면 앞에서부터 다시시작
'algorithm > problem solving' 카테고리의 다른 글
BOJ 1764 듣보잡 (0) | 2020.04.04 |
---|---|
BOJ 11047 동전0 (0) | 2020.04.04 |
BOJ 11866 요세푸스 문제 0 (0) | 2020.03.22 |
B0J 1874 스택수열 (0) | 2020.03.18 |
BOJ 9020 골드바흐의 추측 (0) | 2020.03.12 |
댓글