[백준/Python] 10610번 30

2025. 2. 7. 13:23·알고리즘문제풀이

문제

https://www.acmicpc.net/problem/10610

 


문제이해

30의 배수를 구하고 그 중 가장 큰 수를 출력하라는 문제이다.

처음에는 n의 글자수를 다 분리해서 조합을 해 경우의 수를 다 만들고 30의 배수를 판별하려 했다.

하지만 그것은 너무 복잡한것...!!

 

30의 배수의 특징이 이 문제의 킥이었다.

 

※ 30의 배수 특징

3의 배수이면서 0으로 끝나야 한다.

여기서 3의 배수를 판별하는 방법중 유명한 방법이 있다.

각 자리수의 합이 3의 배수이면 그 수는 3의 배수이다!

 

30의 배수를 판별한 후에는 문제가 아주 쉬워졌다.

30의 배수 중 가장 큰 수를 찾는 것은 각 자리 수를 큰 수부터 정렬하면 된다.


정답

n = input()
total = 0

for i in range(len(n)):
    total += int(n[i])

if (total % 3 == 0) and ('0' in n):
    print(''.join(sorted(n)[::-1]))
else:
    print(-1)

 

 

★ n을 처음에 숫자형으로 두고 풀었더니 문자형으로 사용하는 경우가 더 많아서 이번 문제에서는 문자형으로 두고 풀었다.

저작자표시 비영리 변경금지 (새창열림)

'알고리즘문제풀이' 카테고리의 다른 글

[백준/Python] 2805번 나무 자르기  (0) 2025.02.11
[백준/Python] 18110번 solved.ac  (0) 2025.02.10
[백준/Python] 14425번 문자열 집합  (0) 2025.02.06
[백준/Python] 2003번 수들의 합 2  (0) 2025.02.06
[백준/Python] 1003번 피보나치 함수  (0) 2025.02.03
'알고리즘문제풀이' 카테고리의 다른 글
  • [백준/Python] 2805번 나무 자르기
  • [백준/Python] 18110번 solved.ac
  • [백준/Python] 14425번 문자열 집합
  • [백준/Python] 2003번 수들의 합 2
jungyn
jungyn
jungyn 님의 블로그 입니다.
  • jungyn
    jungyn 님의 블로그
    jungyn
  • 전체
    오늘
    어제
    • 분류 전체보기 (36)
      • 알고리즘문제풀이 (31)
      • 제로인턴 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스택 수열
    사전직무교육
    11729
    2606
    다이나믹프로그래밍
    백준
    1847
    통계헉
    28278
    2563
    18110
    시간초과
    SYS
    너비우선탐색
    스택 2
    DP
    BFS
    counter
    2161
    제로인턴
    프로그래머스
    카드1
    스택
    1629
    교점개수
    solved.ac
    수들의 합 2
    2차원행렬
    후기
    2108
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
jungyn
[백준/Python] 10610번 30
상단으로

티스토리툴바