코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

10610번 : 30
알고리즘/백준

10610번 : 30

2022. 6. 22. 18:16

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

 

10610번: 30

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

www.acmicpc.net

 

 

문제

 

 

코드

import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String n = sc.next();
		String arr[] = n.split("");
		int sum=0;
		
		for(int i=0;i<arr.length;i++)
			sum+=Integer.parseInt(arr[i]);
		
		if(n.indexOf("0")==-1 || sum%3!=0) {
			System.out.print(-1);
		}
		else {
			Arrays.sort(arr, Collections.reverseOrder());
			System.out.print(String.join("",arr));
		}
	}

}

 

 

해결방법

문제를 보고 어떻게 풀지 계속 생각을 해봤는데 반복문을 사용해서 모든 경우의 수를 찾는 방법밖에 떠오르지 않았다. 이 방법으로 푼다면 시간제한이 1초이기에 무조건 시간초과가 날 것이다. 한참을 생각하다 결국 다른 사람의 풀이를 참고하였다.

 

30의 배수가 되기위해서는 다음과 같은 조건을 만족하면된다.

1. 모든 숫자의 합이 3의 배수여야 한다.
2. 0이 존재해야한다.

이 조건을 만족하는 값은 30의 배수이다. 그러므로 입력받은 문자열이 위의 조건이 만족하는지 검사해보고 만족한다면 내림차순 정렬하여서 출력하면 30의 배수가 되는 가장  큰 수가 된다. 

배수 판별법만 알았다면 풀기 쉬웠을 것 같다. 

 

 

배수 판별법 

2의 배수 판별법: 일의 자리수가 0,2,4,6,8 이면 2의 배수이다.
3의 배수 판별법: 각 자리수의 합이 3의 배수이면 3의 배수이다.
4의 배수 판별법: 끝의 두자리 수가 00이거나 4의 배수이면 4의 배수이다.
5의 배수 판별법: 일의 자리수가 0,5 이면 5의 배수이다.
6의 배수 판별법: 짝수이고, 각 자리수의 합이 3의 배수이면 6의 배수이다.
8의 배수 판별법: 끝의 세자리 수가 000이거나 8의 배수이면 8의 배수이다.
9의 배수 판별법: 각 자리수의 합이 9의 배수이면 9의 배수이다.
30의 배수 판별법: 3의 배수이면서 0이 존재해야한다.

 

 

'알고리즘 > 백준' 카테고리의 다른 글

16953번 : A -> B  (0) 2022.06.26
1439번 : 뒤집기  (0) 2022.06.26
1789번 : 수들의 합  (0) 2022.06.22
10162번 : 전자레인지  (0) 2022.06.22
5585번 : 거스름돈  (0) 2022.06.22
    '알고리즘/백준' 카테고리의 다른 글
    • 16953번 : A -> B
    • 1439번 : 뒤집기
    • 1789번 : 수들의 합
    • 10162번 : 전자레인지
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바