Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- BFS
- 크루스칼
- 메모리풀
- 분할 정복
- 세그먼트 트리
- 피보나치 수
- lis
- 시뮬레이션
- dfs
- 재귀
- MST
- 백트래킹
- 이분 탐색
- BeautifulSoup
- 링크드리스트
- 중복 순열
- Knapsack
- 완전 탐색
- 클래스
- 큐
- 스택
- 빠른 입출력
- 우선순위 큐
- DP
- 문자열
- 조합
- SSAFY
- 순열
- 비트마스크
- 그리디
Archives
- Today
- Total
작심 24/7
[백준] 4839번 설탕 배달 본문
- 2018년도 게시글
처음엔 정수 N에 5를 반복문으로 빼는 형식으로 하다가 인풋 중에
4999가 들어가면 5킬로그램 998개와 3킬로그램 3개, 총 1001이 나와야 하는데
이 방식대로라면 5를 두 번 빼면 4989라는 3의 배수가 나오기 때문에 여기서 멈춰버려
합의 최솟값이 나오지 않는다.
그래서 갈아엎고 정수 N을 5로 나눈 후 거기서 -1한 값을 5로 곱하고
그 값을 N에서 뺀 수가 3의 배수이면,,,,
복잡해 보이지만 생각해낸 모든 예제는 통했던 방법을 써봤으나 빛의 속도로 틀렸다.
접으려다가 마지막으로 5 대신 3을 기준으로 풀어보기로 하고
5를 뺀 방식의 소스에 3을 기준으로 해서 좀 고치니까 풀렸다.
#include <iostream>
using namespace std;
int main() {
int N, n;
cin >> N;
n = N;
int res = -1;
int fiv = 0, thr = 0;
if (N % 15 == 0 || N % 5 == 0)cout << N / 5;
else {
while (1) {
N = N - 3;
thr++;
if (N % 5 == 0) {
fiv = N / 5;
res = thr + fiv;
break;
}
else if (N < 0) break;
}
cout << res;
}
return 0;
}
'백준' 카테고리의 다른 글
[백준] 11720번 숫자의 합 (0) | 2020.05.20 |
---|---|
[백준] 15552 빠른 A+B (0) | 2020.05.20 |
[백준] 11648번 지속 (0) | 2020.05.20 |
[백준] 10808번 알파벳 개수 (0) | 2020.05.20 |
[백준] 11719번 그대로 출력하기 2 (0) | 2020.05.20 |
Comments