알고리즘 풀이

[JAVASCRIPT] 백준 10610번 문제 풀이

Lv1_junior_dev 2022. 11. 23. 10:09

 


❗ 조건

조건 1. 각 자리의 수 합이 3의 배수

조건 2. 오름차순 정렬시 배열의 0번 인덱스에는 0이 있어야 30의 배수

const input = require('fs').readFileSync('10610.txt').toString().trim();

let mirco = input.split("").sort();
let result = input.split("").sort((a, b) => b - a).join('');

mirco[0] != 0 ? console.log(-1) : sortMircoArray(mirco);

function sortMircoArray(num) {
    let sum_num = 0

    num.forEach((element, index) => {
        sum_num += parseInt(num[index])
    });

    sum_num % 3 == 0 ? console.log(result) : console.log(-1)
}

❗ 풀이

  1. const input에 10610.txt에 담긴 텍스트를 가져와서 문자열로 바꾼 뒤 공백 제거 후 담기
  2. input을 문자열 하나 하나 쪼갠 후 오름차순으로 정렬하여 mirco에 담기
  3. 오름차순으로 정렬된 mirco의 0번 인덱스가 0이 아니라는 삼항조건식에 의해 참이면 -1을 출력하고 거짓이면 sortMircoArray에 던짐
  4. sortMircoArray(num)를 통해 매개변수로 받은 array를 forEach를 통해 각 인덱스에 담긴 값을 더한 후 sum_num에 담음
  5. sum_num을 3으로 나눴을 때 나머지가 0이면 input값을 오름차순으로 정렬 후 join()을 통해 배열에 담긴 문자열을 합쳐서 출력하고 나머지가 0이 아니면 -1을 출력함