728x90
진짜 한 일주일동안 풀었던 것 같다.
처음에는 엄청 쉽다고 생각했는데 알고보니 생각을 잘 못 하고 있었다.
처음에는
1. 0이 없으면 -1
2. 2자리수면 3으로 나누어지는지
3. 3자리수 이상이면 0을 빼고 나머지 숫자 2개를 조합해서 끝 두 자리가 3으로 나뉘어지는지
로 기준을 나누어서 코딩을 짰는데,
시간초과, 출력초과 기타등등.. 디버깅 해 보니까 전혀 안맞음
이유는 전혀 모르겠지만 처음에 3번에 너무 꽂혀있어서
만들 수 있는 두 자리 조합중 가장 작으면서 큰(??) 수를 빼고,, 나머지 숫자로 큰 수를 조합해서 출력하는것으로 했다..
동적계획법때문에 계속 작은 부분으로 먼가 해결하려고 한듯..
왜 인지 모르겠는데 끝 두 자리 수가 3으로 나누어지면 3의 배수라고 생각했던 것 같다...
알고보니 전체 자리 수를 다 더해서 3의 배수가 되면 그 수는 3의 배수인것이었움...
그래서 각 자리 수를 다 더한다음에 3의 배수인지 보고 아니면 -1,
3의 배수라면 내림차순으로 정렬하여서 출력 하는것으로 짜니까..
훨씬 간단하 코딩이 나왔다..
내가 풀고도 너무 허무해서 포스팅함
N=input()
if N.count('0')==0: print(-1)
else:
NL=sorted(N,reverse=True)
vl=list(map(int,NL))
if sum(vl)%3!=0: print(-1)
else:
print(''.join(NL))
728x90
'Baekjoon Case' 카테고리의 다른 글
[파이썬 / 백준 2884번] 알람 시계 (0) | 2021.11.11 |
---|---|
[파이썬 / 백준 1212번] 8진수 2진수 (0) | 2021.11.02 |
[파이썬 / 백준 1629번] 곱셈 (0) | 2021.10.21 |
[파이썬 / 백준 1476번] 날짜 계산 (0) | 2021.10.16 |
[파이썬 / 백준 1934번] 최소공배수(유클리드 호제법) (0) | 2021.10.15 |