https://www.acmicpc.net/problem/2839
1. 문제에 대한 이해
- 우리가 풀어야 할 문제는 무엇인가?
- 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 구하라 - 주어진 자료는 무엇인가?
- N = 총 배달해야 되는 킬로그램
- 3kg, 5kg 짜리 설탕 봉지 - 조건은 무엇인가?
- 최대한 적은 봉지를 들고 가야한다.
- 들고 갈 수 없는 경우에는 -1을 리턴한다.
2. 계획
- N이 5로 나누어 떨어지면 그 값을 리턴한다.
- 5를 더하면서 count+1을 해준다. 이때, 합계가 N을 넘지 않도록 한다.
- N이 3으로 나누어 떨어지면 그 값을 리턴한다.
- 남은 값을 3으로 나눴을때 나누어 떨어지면 이 값과 count 값을 더한 후 리턴한다.
- 들고 갈 봉지가 없으면 -1을 리턴한다.
3. 실행
- 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (N) => {
// N이 5로 나누어 떨어지면 그 값을 리턴한다.
if (N % 5 === 0) {
return N / 5
}
let count = 0;
let sum = 0;
// 5를 더하면서 count + 1을 해준다.이때, 합계가 N을 넘지 않도록 한다.
while (sum < N - 5) {
sum += 5;
count++;
if ((N - 5) % 3 === 0) {
break;
}
}
// N이 3으로 나누어 떨어지면 그 값을 리턴한다.
if (N % 3 === 0) {
if (count > N / 3 || (N - sum) < 3 || (N - sum) % 3 !== 0) {
return N / 3
}
}
// 남은 값을 3으로 나눴을때 나누어 떨어지면 이 값과 count 값을 더한 후 리턴한다.
if ((N - sum) % 3 === 0) {
return count + ((N - sum) / 3)
}
//들고 갈 봉지가 없으면 -1 리턴
return -1
}
'코테연습' 카테고리의 다른 글
115. 최댓값과 최솟값 Javascript (0) | 2022.09.12 |
---|---|
113. 백준 : 2960 에라토스테네스의 체 Javascript (0) | 2022.09.09 |
107. 이것이 코딩 테스트다 9장 : 미래 도시 Javascript (0) | 2022.09.05 |
106. 이것이 코딩 테스트다 8장 : 효율적인 화폐 구성 Javascript (0) | 2022.09.04 |
104. 이것이 코딩 테스트다 8장 : 개미 전사 Javascript (0) | 2022.09.04 |
댓글