치춘짱베리굿나이스

[백준] 10610 본문

Javascript + Typescript/자바스크립트로 알고리즘풀기

[백준] 10610

치춘 2022. 3. 10. 23:59

30

문제

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

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

입력

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

출력

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

풀이

const thirty = () => {
  let input = require("fs")
    .readFileSync("/dev/stdin")
    .toString()
    .trim()
    .split("")
    .map(Number)
    .sort((a, b) => a - b);
  let sum = 0;
  const len = input.length;
  if (input[0] !== 0) console.log("-1");
  else {
    for (let i = 0; i < len; i++) sum += input[i];
    if (sum % 3) console.log("-1");
    else console.log(input.reverse().join(""));
  }
};

thirty();

반성회

  1. 오름차순으로 정렬했을 때 첫 번째 원소가 0이 아닐 경우 10의 배수가 아니므로 -1 출력
  2. 모든 숫자를 더했을 때 3의 배수가 아닐 경우 어떤 숫자 조합도 3의 배수가 될 수 없으므로 -1 출력
  3. 그 외의 경우 내림차순으로 출력

'Javascript + Typescript > 자바스크립트로 알고리즘풀기' 카테고리의 다른 글

[백준] 1531  (0) 2022.03.10
[백준] 1439  (0) 2022.03.10
[백준] 1459  (0) 2022.03.10
[백준] 1308  (0) 2022.03.10
[백준] 1016  (0) 2022.03.10
Comments