메이쁘

(JAVA) 백준 10610번 : 30 --- [문자열] 본문

Algorithm/Baekjoon

(JAVA) 백준 10610번 : 30 --- [문자열]

메이쁘 2021. 3. 2. 01:23

www.acmicpc.net/problem/10610

 

10610번: 30

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

www.acmicpc.net

 

안녕하세요.

 

문자열 문제입니다.

 

난이도는 보통이에용!

 

 

 

가장 먼저, 30의 배수가 되는 조건을 생각해봤습니다.

 

  1) 맨 뒤가 0이 있어야 함(뒤에 0의 개수는 상관X)
  2) 3의 배수

 

 

그럼, 이 30의 배수를 찾는 문제를 해결하는 매커니즘을 작성해보겠습니다.

 

 

매커니즘


  1) 0을 전부 제외(어차피 맨 오른쪽에 붙이면 되니까)

 

  2) 0을 제외한 남은 숫자들을 전부 더했을 때, 값이 3의 배수인지 확인하기

    -> 아니면 3의 배수가 아님

 

  3) 0을 제외한 남은 숫자들 내림차순 정렬

 

  4) 뒤에 0 제외한 개수만큼 0 붙이기

 

 

라고 생각했습니다.

 

이를 좀 더 간소화시켜보면

 

 

 

1) 주어진 숫자를 오름차순 정렬하기

  -> 내림차순 정렬이 필요하지만, 간단하게 오름차순 정렬 후 반대로 for문 수행하면 된다.

 

2)  맨 끝 원소부터 0번 인덱스(첫 번째 원소) 까지 for문 탐색

 

3)  각 원소를 전부 더하기

 

4)  각 원소를 전부 더한 값이 3의 배수이고, 가장 첫 번째 원소(0번 인덱스) 의 값이 0이면 정답

  ->  두 조건 중 하나라도 만족하지 않으면 30의 배수가 아님.

 

 

 

 

 

이상입니다.

 

감사합니다!

소스코드


 

 

Comments