Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 자바스크립트
- CSS
- 백준골드
- 프로그래머스코테
- dp알고리즘
- 프로그래머스JS
- 포이마웹
- 다이나믹프로그래밍
- 프로그래머스
- js코테
- HTML
- 백준
- JS
- 백준nodejs
- 백준구현
- 백준js
- 안드로이드 스튜디오
- 익스프레스
- 백준구현문제
- 몽고DB
- 리액트댓글기능
- 리액트커뮤니티
- 리액트
- css기초
- 코테
- HTML5
- 코딩테스트
- 알고리즘
- 백준알고리즘
- JS프로그래머스
Archives
- Today
- Total
개발새발 로그
[JS] 백준 1759번 : 암호만들기 - 수학,브루트포스 알고리즘,조합론,백트래킹 본문
https://www.acmicpc.net/problem/1759
1759번: 암호 만들기
첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.
www.acmicpc.net
📋풀이방법
1. DFS에서 조합 알고리즘을 이용했다.
2. 트리는 만약 1을 뽑으면 2 3 4를 뽑고 2를 뽑으면 3 4를뽑는형태로 뻗어나간다.
3. L개를 뽑으면 L개의 알파벳을 검사한다
-a, e, i, o ,u가 존재하면 gather라는 변수를 +1한다
-그외에는 consonant라는 변수를 +1한다.
4.gather>=1 && consonant>=2 일 경우에만 result배열에 정답을 넣는다.
🤟내 제출
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim();
input=input.replace(/\r/g,"").split("\n");
let [L,C]=input.shift().split(" ").map(Number);
let arr=input.shift().split(" ");
arr=arr.sort();
let result=[];
let temp=Array.from({length:L},()=>0);
function DFS(D,s){
if(D==L){
let gather=0;
let consonant=0;
for(var i=0;i<L;i++){
if(['a','e','i','o','u'].indexOf(temp[i])!=-1){
gather++;
}
else {
consonant++;
}
}
if(gather>=1&&consonant>=2) result.push(temp.slice().join(""))
}
else{
for(var i=s;i<C;i++){
temp[D]=arr[i];
DFS(D+1,i+1);
}
}
}
DFS(0,0);
console.log(result.join("\n"))
💢어려웠던 점
1. DFS의 조합구하기 방식을 아직 못외웠다.
-조합구하기는 중요한 부분이므로 꼭 외워야겠다.
728x90
반응형
LIST
'알고리즘' 카테고리의 다른 글
[JS] 백준 17298번 - 오큰수 - 스택, 자료구조 (0) | 2023.08.07 |
---|---|
[JS] 백준 1978 : 알파벳 - 그래프, 이론그래프, 탐색, 깊이 우선 탐색,백트래킹 (0) | 2023.08.01 |
[JS] 백준 1753 : 최단경로 - 다익스트라 (0) | 2023.07.25 |
[JS] 백준 2447 : 별 찍기 (0) | 2023.07.24 |
[JS] 백준 9663 : N-Queen - 백트래킹 (0) | 2023.07.23 |