[TIL]0817_백준2720, 10162

JJ_u·2021년 8월 17일
0

TIL

목록 보기
5/7
post-thumbnail

거의 2주? 3주가량 제대로 포스팅을 못한거 같은데 다시 꾸준히 올려야겠다😥

그리디(greedy) 알고리즘

  • 그리디 알고리즘이란?
    Greedy algorithm 또는 탐욕 알고리즘이라고 불린다.
  • 주로 최적의 해에 가까운 값을 구할때 사용
  • 많은 경우 중 매 순간 최적이라고 생각되는 경우를 선택하여 최종 값을 구한다.
    💡 항상 최적의 결과를 도출하진 않음 그러나 최적에 가까운 값을 구할 수 있는 장점이 있다.

✔️ 백준 10162 전자레인지

import sys
T = int(sys.stdin.readline())

if T % 10 != 0:
    print(-1)
else:
    A = B = C = 0
    A = T // 300
    B = (T % 300) // 60
    C = (T % 300) % 60 // 10
    print(A, B, C)
 

크게 어렵지 않은 문제였는데
이렇게 접근 해봤다.

  1. 숫자를 입력하고
  2. 입력한 숫자가 10으로 나누어 떨어지지 않으면 -1 출력
  3. 그렇지 않을 경우
  4. A는 T를 300으로 나눈 몫
  5. B는 T를 300으로 나눈 나머지를 60으로 나눈 몫
  6. C는 T를 300으로 나눈 나머지, 그 나머지를 60으로 나눈 나머지, 그 나머지를 10으로 나눈 몫

비슷한 문제로

✔️ 백준 2720 세탁소 사장 동혁

import sys

for _ in range(int(sys.stdin.readline())):
    T = int(sys.stdin.readline())

    Q = T // 25
    D = (T % 25) // 10
    N = (T % 25) % 10 // 5
    P = (T % 25) % 10 % 5 // 1

    print(Q, D, N, P)

이것도 10162와 비슷하게 접근했는데 다들 리스트로 푸는것 같아서...리스트로 다시 풀어봐야겠다.


🍎느낀점

  • 그리디는 보통 근사치 추정에 사용되고 반드시 최적의 해 ❌
  • 최적의 해에 가까운 값을 구하는 방법 중 하나라고 생각하면 좋을 것 같다.
  • 다음엔 한계에 대해 더 자세히 알아보고 문제를 풀어봐야겠다.
  • 스위프트와 알고리즘을 좀 우선순위에 놓아야겠다.
  • 시간 분배 중요성
profile
개발자 만들기

0개의 댓글