BOJ 2839 설탕 배달
✅ 그리디를 공부하면서 한번 풀어 본 문제인데, 진짜 생각보다 너무 오래 걸림.
내 문제점이 input case에 대해서 면밀히 살펴보지 않는다는 건데, 진짜 좀 살펴봐야겠음.
머릿속으로 이렇게 하면 되겠지 하고 기깔나게 풀었는데, 틀렸다길래 보ㅇ니까 그냥 틀렸더라 .. 로 직 이 ..
이걸 한시간이나 걸려 풀었다니!
문제가 무엇이었냐면
11이 들어왔을때는 (5 + 3 + 3)으로 처리가 가능했음.
근데 나는 5에서 몫을 구하고 나머지를 input에 재할당하여 사용하니까 11을 처리할 수가 없게 되었음.
근데 가만히 생각해보니, 그냥 한번 수행할 때, 한번씩 숫자를 빼면서 해도 될 것 같은 기분이 들었음.
뭔 ㄱ ㅏ 시간복잡도가 정직하게 O(N)이라서 좀 그런 기분은 있었지만, 그냥 하니까 통과
var count = 0
var input: Int! = Int(readLine()!)! // 3..<5000 정수
while input > 0 {
// 둘다 0으로 나누어 떨어지는지 체크 (큰수가 유리함으로 큰수부터 차례로)
if input % 5 == 0 {
count += 1
input -= 5
} else if input % 3 == 0 {
count += 1
input -= 3
} else if input > 5 { // 둘다 나누어 떨어지지 않는데, input이 5보다 크면
count += 1
input -= 5
} else {
count = -1
break
}
}
print(count)
'알고리즘 문제 풀이' 카테고리의 다른 글
[Swift] BOJ 10610번 30 (0) | 2022.03.22 |
---|---|
[Swift] BOJ 1931회의실 배정 (0) | 2022.03.22 |
[Swift] 프로그래머스 LV1. 소수 찾기 (0) | 2022.03.19 |
[Swift] 프로그래머스 LV1. [1차] 다트 게임 (0) | 2022.03.19 |
[Swift] 프로그래머스 LV1. [1차] 비밀지도 (0) | 2022.03.19 |