Po_tta_tt0
콩심콩 팥심팥 🌱
Po_tta_tt0
전체 방문자
오늘
어제
  • 분류 전체보기 (266)
    • 🐛 회고 (14)
    • 💭 생각 (2)
    • 🤸‍♀️ 내 프로젝트 (16)
      • FISH-NEWS (8)
      • MBTI 과몰입 테스트 (2)
      • twitter clonecoding with TS (4)
      • pilzagenda (2)
    • 👨‍👩‍👧‍👦 팀 프로젝트 (2)
      • 피우다 프로젝트 (0)
      • SEMO(세상의 모든 모임) (1)
      • 마음을 전하는 텃밭 (1)
      • Stackticon (0)
    • 👨‍💻 CS지식 (11)
    • ✍ 공부 (94)
      • JavaScript (21)
      • TypeScript (39)
      • Html (0)
      • CSS (2)
      • React (18)
      • NextJS (7)
      • Vue (1)
      • Python (1)
      • Django (0)
      • 개발환경 & 그 외 (2)
    • 🏄‍♀️ 코딩테스트 (99)
      • 🐍 Python (99)
    • 🐙 Git & GitHub (3)
    • 📑 오류기록 (8)
    • 📚 우리를 위한 기록 (9)
    • 수업 (3)
    • 강의 등 (2)
    • 👩‍🎓 SSAFY (0)
    • 👋 우테코 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • dfs
  • 파이썬
  • js
  • 이분탐색
  • 백준 파이썬
  • React
  • 백준 숨바꼭질
  • react-router-dom
  • 문자열
  • 플로이드 워셜
  • 구현
  • BFS + DP
  • 파이썬 다익스트라
  • bfs
  • 자바스크립트
  • Next.js
  • 시뮬레이션
  • 파이썬 감시 피하기
  • 백준
  • DP

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Po_tta_tt0

콩심콩 팥심팥 🌱

🏄‍♀️ 코딩테스트/🐍 Python

[ 백준 10610 해설 ] ( python ) 30

2022. 7. 13. 22:59
반응형

 

📚 30

 

문제

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다.

미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라.

 

입력

N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.

 

출력

미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라.

 

예제 입력 1 복사

30

예제 출력 1 복사

30

예제 입력 2 복사

102

예제 출력 2 복사

210

예제 입력 3 복사

2931

예제 출력 3 복사

-1

예제 입력 4 복사

80875542

예제 출력 4 복사

88755420

 

 

 

 

 

 

 

✍ 접근

  • 3의 배수를 구하는 공식을 알아야 수월하게 풀 수 있는 문제였다.

 

 

 

 

정답코드

import sys
input = sys.stdin.readline
N = str(input().rstrip())
N = sorted(N,reverse = True)
sum = 0
if '0' not in N:
    print(-1)
else:
    for x in N:
        sum+=int(x)
    if sum%3 != 0:
        print(-1)
    else:
        print("".join(N))

해설

3의 배수 구하기

  • 모든 자리 수를 더했을 때 3으로 나누어떨어지면 3의 배수다
  • 문제에서는 30의 배수이기 때문에 맨 마지막 자리는 꼭 0이어야 한다
    => 3으로 나누어떨어지는 수는 어떻게 하더라도 3의 배수가 된다
    => 3으로 나누어떨어질 때 맨 마지막 자리가 0이면 30으로도 나누어떨어진다
    => 수가 가장 커지게 정렬해서 3으로 나누어떨어지는지, 0이 있는지만 확인하면 된다

 

  • 따라서 N 안에 0이 없다면 -1을 찍어주고
  • 0이 있다면 3의 배수인지를 확인해준다.

 

⭐ 배움

  • 3의 배수 구하기 = 각 자리수의 합이 3으로 나누어떨어지면 3의 배수

 

반응형
저작자표시 (새창열림)

'🏄‍♀️ 코딩테스트 > 🐍 Python' 카테고리의 다른 글

[ 백준 2800 해설 ] ( python ) 괄호 제거  (0) 2022.07.16
[ 백준 2504 해설 ] ( python ) 괄호의 값  (0) 2022.07.16
[ 백준 14889 해설 ] ( python ) 스타트와 링크  (1) 2022.07.13
[ 백준 2665 해설 ] ( python ) 미로만들기  (0) 2022.07.12
[ 백준 18405 해설 ] ( python ) 경쟁적 전염  (0) 2022.07.05
    '🏄‍♀️ 코딩테스트/🐍 Python' 카테고리의 다른 글
    • [ 백준 2800 해설 ] ( python ) 괄호 제거
    • [ 백준 2504 해설 ] ( python ) 괄호의 값
    • [ 백준 14889 해설 ] ( python ) 스타트와 링크
    • [ 백준 2665 해설 ] ( python ) 미로만들기
    Po_tta_tt0
    Po_tta_tt0
    감자의 코딩하는 블로그 콩심은데 콩나고 팥심은데 팥난다

    티스토리툴바