본문 바로가기
Study/Algorithm & Data structure

[백준][Greedy] 10610번 문제 - 30 python (200804)

by 후이 (hui) 2020. 8. 4.
728x90
반응형

1. 문제 설명 

 

 

 

2. 풀이

import sys
n = list(sys.stdin.readline().rstrip())
n.sort(reverse=True)
if n[-1] != '0' or sum(map(int, n)) % 3 != 0:
    print(-1)
else:
    print(''.join(n))

 

3의 배수 판정법 : 모든 숫자의 합이 3이면 됨. 

 

처음엔 pop 으로 하나씩 뽑아서 판단하는 알고리즘을 만들어야하나 햇지만.

3의 배수는 개별 숫자가 아니라 전체 숫자 합으로 한번에 판명나기에 위의 방법을 선택했음 (아주 간단!)

그리고 해당 문제는 3의 배수가 아닌 30의 배수이기 때문에 1의 자리 숫자가 무조건 0 이어야 한다.

따라서 if 문에 조건 2개를 걸어주었다. 

 

 

 

3. 응용

 

 

 

 

배수 판정법 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 배수 판별법이라고도 함 배수 판정법은 배수인지 확인하려는 수의 배수가 맞는지 간단히 확인하는 것이다. 배수인지 확인하려

ko.wikipedia.org

 

 

 

 

 

 

 

 

4. 정리 

다양한 케이스들이 등장하고, 이걸 해결할 수 있는 치트키를 찾는게 관건인 거 같다. 

스택 큐 해쉬 처럼 자료 구조에 대한 이해보다는

여러개의 케이스들이 주어지고, 이걸 한 큐에 판별할 수 있는 점화식을 찾는게 

 

이게 파악이 안되면 지옥의 이프문을 만들어야하는데...

지옥의 이프문을 만드는 순간 몇몇 케이스는 무조건 통과 못한다는거...

 

알면 쉬운데 알기전까지는 어려운 그리디...

 

 

 

728x90
반응형

댓글