[백준] 1759 번 - 암호 만들기 Javascript(NodeJs)

JeongYong·2022년 10월 13일
0

Algorithm

목록 보기
4/275

문제 링크

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

풀이

브루트포스 알고리즘, 백트래킹

1.소스 코드

const fs = require('fs');
let inputData = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
let [L, C] = inputData[0].split(' ').map(x=>x*1);
let input = inputData[1].split(' ');
input.sort();
let vow = ['a','e','i','o','u']; //알파벳 모음
let result = [];
let answel = '';
DFS();
function DFS() {
    if(result.length === L) {
        let vowels = 0; //모음 하나 이상
        let conso = 0; //자음 두개 이상
        let check = false;
        for(let i=0; i<L; i++) {
            if(vow.includes(result[i])) {
                vowels += 1;
            } else {
                conso += 1;
            }
            if(vowels >=1 && conso >=2) {
                check = true;
                break;
            }
        }
        if(check) {
            answel += `${result.join('')}\n`;
        }
        return;
    } else {
        for(let i=0; i<C; i++) {
            if(!result.includes(input[i])){
                if(result.length === 0) {
                    result.push(input[i]);
                    DFS();
                    result.pop();
                } else {
                    if(input[i] > result[result.length-1]) {
                        result.push(input[i]);
                        DFS();
                        result.pop();
                    }
                }
            }
        }
    }
}
console.log(answel.trim());

0개의 댓글