문제 출처: 백준 2839번 설탕배달

문제


스크린샷 2022-07-27 오후 3 29 57 스크린샷 2022-07-27 오후 3 30 38

풀이


문제를 잘 읽어보고 수학적으로 계산하여 풀 수 있는 문제입니다.
봉지의 수를 최대한 줄여야 하므로 5킬로그램 봉지를 먼저 계산한 후 3킬로그램을 계산하여 풀어보았습니다.

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
var n = Int(readLine()!)!
/// 봉지의 갯수
var result = 0

// n을 감소시킬 때마다 result(봉지) 증가
while n > 0 {
  if n % 5 == 0 {
    // 5로 나누어 떨어질 경우
    n -= 5
    result += 1
  } else if n % 3 == 0 {
    // 3으로 나누어 떨어질 경우
    n -= 3
    result += 1
  } else if n > 5 {
    n -= 5
    result += 1
  } else {
    // 3 또는 5로 계산이 안될 경우 -1
    result = -1
    break
  }
}

// 결과 출력
print(result)
  1. n을 입력받아 Int 형으로 변환합니다.
  2. n을 5와 3으로 계산할 때마다 n의 값을 감소시키고 봉지의 개수를 증가시킵니다.

먼저 손으로 풀어보고 규칙을 찾아낸 다음 코드로 옮기시면 좀 더 쉽게 푸실 수 있습니다.

이렇게 풀 경우 메모리: 69100 KB, 시간: 8 ms 결과가 나오게 됩니다.

업데이트:

댓글남기기