코딩,안되면 될때까지

10610-30 본문

백준/백준-파이썬

10610-30

soo97 2022. 1. 16. 14:46
728x90
반응형

<문제>

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

 

10610번: 30

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

www.acmicpc.net

<풀이>

-포인트-

1) 30의 배수이므로 일의자리 숫자는 무조건 0이다. 따라서 입력받은 숫자에 0이 반드시 포함되어야 한다.

2) 30의 배수이기 위해선 3의 배수이기도 해야한다. 3의 배수가 되기위해선 각 자리의 수를 더했을때 3의 배수가 되어야한다.

-파이썬-

s = list(input())
s.sort(reverse=True)
sum = 0
for i in s:
    sum+=int(i)
if sum%3!=0 or "0" not in s:
    print(-1)
else:
    print(''.join(s))

※join 함수 

: 리스트의 각 요소들을 하나의 문자로 이어주는 함수

 《" 구분자".join(리스트)

-java코드-

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        ArrayList<Character> list = new ArrayList<Character>();
        for(int i = 0;i<s.length();i++){
            list.add(s.charAt(i));
        }
        list.sort(Comparator.reverseOrder());
        int sum = 0;
        for(int i = 0;i<list.size();i++){
            sum+=Character.getNumericValue(list.get(i));
        }
         
        if((sum%3!=0) || (list.contains('0')==false)){
            System.out.println(-1);
        }
        else{
            String str="";
            for(Character lists:list){
                str+=lists;
            }
            System.out.println(str);
        }

    }
}
728x90
반응형

'백준 > 백준-파이썬' 카테고리의 다른 글

11399-ATM  (0) 2022.01.23
2839-설탕  (0) 2022.01.21
1541-잃어버린 괄호  (0) 2022.01.20
1946-신입사원  (0) 2022.01.18
13305-주유소  (0) 2022.01.17
Comments