티스토리 뷰
https://www.acmicpc.net/problem/2839
이 문제는 의도와는 다르게 다소 복잡하게 해결한 것 같습니다...ㅠㅠ 추후에 다른 풀이를 보고 다시 풀어보겠습니다... 우선 지금 해결한 풀이를 설명하겠습니다.
1. 설탕 봉지를 최소로 하면서 정확한 양의 설탕을 배달해야하기 때문에 우선 5kg 설탕을 최대한 많이 가져갑니다.
2. 그 이후에 3kg 설탕을 하나씩 증가시키며 설탕 무게를 맞춥니다.
3. 만약 설탕의 무게가 가져가려는 무게와 맞다면 이때 5kg 설탕 봉지 수와 3kg 설탕 봉지 수를 더해 값을 리턴합니다.
4. 설탕의 무게가 가져가려는 무게보다 커지는 경우에는 다시 5kg 설탕 봉지 수를 하나씩 감소시키면서 2, 3번 과정을 반복합니다.
5. 5kg 설탕 무게가 0이면서 이때까지 설탕의 무게를 맞출 수 없는 경우 -1을 리턴합니다.
자바 코드는 다음과 같습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
System.out.println(calculateSugarCount(n, n / 5));
}
private static int calculateSugarCount(int n, int fiveCount) {
int answer = -1;
int threeCount = 0;
while (true) {
// 설탕의 무게가 초과된 경우
if (n < (fiveCount * 5) + (threeCount * 3)) {
break;
}
// 설탕의 무게를 맞춘 경우
if (n == (fiveCount * 5) + (threeCount * 3)) {
answer = fiveCount + threeCount;
break;
}
// 3kg 설탕을 증가시키면서 설탕 무게 맞추기
threeCount++;
}
// 설탕 무게를 아직 구하지 못한 경우
if (fiveCount != 0 && answer == -1) {
// 5kg 설탕 봉지 수를 줄이고 다시 구하기
answer = calculateSugarCount(n, fiveCount - 1);
}
return answer;
}
}
'알고리즘' 카테고리의 다른 글
[백준 알고리즘] 1011 - Fly me to the Alpha Centauri (0) | 2021.06.15 |
---|---|
[백준알고리즘] 10757 - 큰수 A+B (0) | 2021.06.04 |
[백준알고리즘] 2775 - 부녀회장이 될테야 (0) | 2021.05.31 |
[백준알고리즘] 10250 - ACM 호텔 (0) | 2021.05.27 |
[백준알고리즘] 2869 - 달팽이는 올라가고 싶다 (0) | 2021.05.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- string
- programmers
- ionic
- Algorithm
- array
- Dynamic Programming
- 프로그래머스
- map
- CodePipeline
- Baekjoon
- 조합
- BFS
- SWIFT
- ECR
- 에라토스테네스의 체
- 소수
- Combination
- AWS
- spring
- EC2
- search
- sort
- java
- 순열
- permutation
- 수학
- CodeCommit
- CodeDeploy
- DFS
- cloudfront
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
글 보관함