728x90
30 성공출처다국어분류
한국어
시간제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 | 256 MB | 21693 | 7983 | 6248 | 36.417% |
문제
어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어 한다.
미르코를 도와 그가 만들고 싶어 하는 수를 계산하는 프로그램을 작성하라.
입력
N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.
출력
미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라.
[ 문제 설명 ]
이런 문제가 있을 때, 한 번 원하는 수를 나열을 해보는 것도 좋은 방법이다.
30의 배수를 나타내 보자!
30, 60, 90, 120, 150, 180, 210, 240, 270,......
혹시 무슨 규칙이 보이시나요?
잘 보시면 0은 항상 포함됨을 알 수 있습니다
또한 각각의 수들의 합은 3으로 나눠집니다.
이 2 조건을 이용해 이문제를 푸는 것이 이문제의 intuition입니다.
[ 코드 ]
n = input()
n = sorted(n, reverse=True)
# print(n)
sum = 0
if '0' not in n:
print(-1)
else:
for i in n:
sum += int(i)
if sum % 3 != 0:
print(-1)
else:
print("".join(n))
이 문제에서 sorted는 리턴 값은 리스트 형태로 출력된다는 점 인지하시고, sort를 하면 내림차순으로 정렬되기 때문에 그 자체로 그 수의 대표 최댓값을 보여주는 것이기 때문입니다.
그 대표 최댓값이 문제의 조건을 확인하는 것은 위에 설명한 대로 코딩한 것이죠.
후기
너무 오랜만에 포스팅합니다.
반성..
728x90
'백준 코딩 테스트' 카테고리의 다른 글
백준 1931번 - 회의실 배정 (0) | 2021.04.05 |
---|---|
백준 1783번 - 병든 나이트 (0) | 2021.03.18 |
백준 2875번 - 대회 or 인턴 (0) | 2021.03.11 |
백준 11047번 - 동전0 (0) | 2021.03.11 |
백준 1967번 - 트리의 지름(2) (0) | 2021.03.09 |