sbs1621
부릉부릉 개발자
sbs1621
만나서 반갑습니당 🤍
Portfolio
Github
email
전체 방문자
오늘
어제
  • 분류 전체보기 (69)
    • Spring Boot (3)
      • Swagger (2)
      • Test Code (1)
    • Spring Security (4)
      • Json Web Token (4)
    • Algorithm (25)
      • Beakjoon (22)
      • Programmers (0)
      • 이것이 코딩테스트다 (3)
    • Kubernetes (0)
      • Docker (0)
    • Util (2)
      • Customizing (2)
    • Computer Sience (8)
      • Operating System (0)
      • Network (8)
    • IoT (2)
      • Arduino (2)
    • Daily Life (16)
      • 꿀팁 (1)
      • 일상 (6)
      • 해외여행 (4)
      • 회고록 (3)
      • 학교 (2)
    • Work (9)
      • ETRI (9)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
sbs1621

부릉부릉 개발자

[Beakjoon] 백준 10610번 Python
Algorithm/Beakjoon

[Beakjoon] 백준 10610번 Python

2022. 6. 20. 18:00
Beakjoon 10610, 30
solved.ac Silver5
Greedy 알고리즘

문제

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

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

입력

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

출력

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

Solution

number = input()
numList = list(map(int, str(number)))
numList.sort()
checkThree = 0
count = 1
result = 0
if "0" not in number:
    print(-1)
else:
    for i in range(len(numList)):
        checkThree += numList[i]
    if checkThree % 3 == 0:
        for i in range(len(numList)):
            if i == 0:
                result += numList[i] 
            else:
                count *= 10
                result += numList[i]* count

        print(result)
    else:
        print(-1)

풀이

입력한 수 안에 0이 없으면 30의 배수가 될 수 없기 때문에 -1 출력

입력한 수를 분리해서 하나하나 더했을 때 3의 배수가 되면 30의 배수가 될 수 있으므로 이를 오름차순으로 정렬하면 30의 배수가 된다.

  • numList = list(map(int, str(number))) : 입력받은 값을 하나하나 분리
  • if "0" not in number: : 입력받은 number에 0이 있는지 확인 후 없으면 -1 출력
  • if checkThree % 3 == 0: : 모든 수를 더했을 때 3의 배수가 되는지 확인 후 없으면 -1 출력
  • 내림차순으로 정렬되어있는 list를 오름차순으로 정렬 후 출력

틀린 게 있다면 댓글 달아주세요~~

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

 

10610번: 30

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

www.acmicpc.net

    'Algorithm/Beakjoon' 카테고리의 다른 글
    • [Beakjoon] 백준 1931번 Python
    • [Beakjoon] 백준 11000번 Python
    • [Beakjoon] 백준 2875번 Python
    • [Beakjoon] 백준 11047번 Python

    티스토리툴바