728x90
반응형
코드업 그리디 문제
# 3120 리모컨
링크 : https://codeup.kr/problem.php?id=3120&rid=0
풀이
a, b = map(int, input().split())
df = [10, 5, 1]
diff = abs(b-a)
cnt = 0
if diff%10 in [9, 8]:
diff_with_a = 10 - diff%10
diff_s = diff + diff_with_a
for i in range(3):
cnt += diff_s // df[i]
diff_s = diff_s % df[i]
cnt += diff_with_a
elif diff%10 == 4:
diff_with_a = 5 - diff%5
diff_s = diff + diff_with_a
for i in range(3):
cnt += diff_s // df[i]
diff_s = diff_s % df[i]
cnt += diff_with_a
else:
for i in range(3):
cnt += diff // df[i]
diff = diff % df[i]
print(cnt)
# time : 1.08 (3 22 입력 기준)
풀이 후기
- 문제에 주어진 모든 조건을 활용할 필요는 없다
- 양수와 음수 버튼을 df으로 정의하는 방식을 시도할까 해봤으나 사용되지 않는 데이터가 포함되어있어 삭제하였다(df의 음수버튼 목록)
- 정답부터 맞춰보고 코드를 개선해보자
- 점점 시간과 메모리 제한이 있는 문제를 자주 마주치게 되는 것 같다. 정답으로 채점돼도 필요없는 코드가 있는지, 시간복잡도는 어떤지, 개선할 여지가 있는지 확인해보는 습관을 기르자
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] # 2798 블랙잭 (0) | 2021.12.17 |
---|---|
[코드업 파이썬] # 4012 석차 계산 (0) | 2021.12.17 |
[코드업 파이썬] # 3170 기억력 테스트 9 (0) | 2021.12.13 |
[코드업 파이썬] # 3019 스케줄 정리 (0) | 2021.12.12 |
[코드업 파이썬] # 3015 성적표 출력 (0) | 2021.12.12 |