10610. 30.

·2025년 7월 5일
0

백준 알고리즘

목록 보기
190/272

첫번째 풀이

  • 단순하게 string -> long long 으로 변환해서 진행했는데,
    입력으로는 10만 자리의 숫자가 들어올 수 있다.

-> 이로인해 out of range 발생함.

문제 풀이 해결 전략

핵심
: 타겟을 잡고 어떻게 줄여나갈 수 있을까?
또는 규칙성, 공통점이 있을까????
를 생각해보자.
그동안 pq가 없는 아이디어 생각해야 하는 그리디 문제는
항상 작은 타겟값을 가지고 어떻게 할까???? 를 통해
문제 해결 전략을 만들었다.

  • 30으로 나머지 없는 최대값이다.

  • 완탐도 아니고, 아이디어가 필요하다.
    // 알고리즘 유형은 그리디이고,

  • 30에 집중하자.

  • 30으로 나누어 떨어지는 수는
    2,3,5,6으로도 나누어 떨어지는 수이다.

  • 2로 나누어떨어지는 수는
    마지막 값이 '2', '4' , '6' , '8' , '0' 이다.

- 3으로 나누어떨어지는 수는
3 6 9 12 15 18 21 24 27 30 33 36 39 42 ~~
-> 나누는 것보다도 다르게 표현할 수 있는 공통점을 찾아야 한다.
그렇지 못하면 해결할 수 없는 문제다.

신기하게도 각 자리수의 합이 3의 배수다....

  • 5로 나누어 떨어지는 수는
    5 10 15 20 25
    -> 뒷자리가 '5' 아니면 '0'이다. 앞자리는 상관없다.

어떻게 할 것이냐?

  • 30으로 나누어 떨어지는 수는
    30 60 90 120 150 180 210 인데 어라????

  • 이거 3의 배수 인데 그 배수에 그냥 10을 곱한 것이다.

- 3으로 나누어떨어지는 수는
3 6 9 12 15 18 21 24 27 30 33 36 39 42 // 여기다가 10 곱함.

그래서 30으로 나누어 떨어지는 수는

  • 2가지 조건으로 처리 가능하다.
    1) 모든 자리수의 합이 3 이고
    2) 마지막 자리값이 '0' 이면
    결론) 위의 입력값 10만자리도 당연히 처리 가능하다.
profile
🔥🔥🔥

0개의 댓글