728x90
처음 든 생각
- 브루트 포스해도 시간 복잡도가 괜찮을까? -> 최대 50000이니깐 O(N)으로 한쪽으로만 탐색을 다 하면 충분하겠네
나의 답
import sys
input = sys.stdin.readline
N = int(input())
three = N // 3
five = 0
isPossible = False
result = 10000000
while three >=0:
if (N - (three * 3)) % 5 == 0:
five = (N - (three * 3)) // 5
result = min(result, three + five)
isPossible = True
three -= 1
if isPossible:
print(result)
else:
print(-1)
사용될 3의 개수의 최댓값이 더 크므로 3의 개수를 기준으로 하나씩 줄여가면서 5의 개수를 판단해보기로 하였다.
3의 개수 * 3 만큼 값을 빼준 값이 5로 나누어떨어지면 그 때만 5의 개수를 계산하면 된다.
그 다음 연산은 코드를 보면 이해가 어렵지 않을 거라 생각한다.
728x90
'스터디 > 코딩테스트' 카테고리의 다른 글
[프로그래머스 python] 가장 많이 받은 선물 (0) | 2024.08.18 |
---|---|
백준 1018 - 체스판 다시 칠하기 (0) | 2024.01.31 |
백준 19532 - 수학은 비대면강의입니다 (2) | 2024.01.30 |
백준 14889 - 스타트와 링크 (2) | 2024.01.29 |
백준 14888 - 연산자 끼워넣기 (2) | 2024.01.28 |