Skip to content

Commit bfaab40

Browse files
authored
[moonjonghoo]25.02.27 (#51)
* String_Reversal / 기초 * control_z / 기초 * I_don't_like_English /기초 * String_Calculation / 기초 * Crane_Doll_Picking_Game / 중급 * 순서쌍의_개수 / 기초 * 점의_위치_구하기 / 기초 * 로그인_성공? / 기초 * 특이한_정렬 / 기초 * 프로세스 / 고급 * 프로세스 /고급 수정 * 모스부호(1) / 기초 * A로 B만들기 /기초 * 진료순서/ 기초 * 등수매기기 /기초 * 완주하지 못한 선수 /중급 * maximum_depth_of_binary_tree / 기초 * binary_tree_inorder_traversal /기초 * same_tree /기초 * Invert_Binary_tree/기초 * 중복된_문자_제거 /기초 * 한_번만_등장한_문자 /기초 * 소인수분해 /중급 * 무작위로_K개의_수_뽑기 / 기초 * contains_duplicate /기초 * intersection_of_two_array /기초 * count_the_number_of_consistent_strings /기초 * design_hashset/기초 * repeated_dna_sequences /중급 * longest_consecutive_sequence /중급 * DFS와_BFS /기초 * 전력망을_둘로_나누기 /심화 * 게임_맵_최단거리 /중급 * 타겟_넘버 /중급 * N과_M(1) /기초 * N과_M(2) /기초 * 소수_찾기 /고급 * 부분수열의_합 /중급 * K번쨰수 /중급 * 가장_큰_수 / 심화 * H-index/심화 * 두_개_뽑아서_더하기 /중급
1 parent 5438731 commit bfaab40

File tree

9 files changed

+184
-6
lines changed

9 files changed

+184
-6
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
const fs = require("fs");
2+
const input = fs.readFileSync("example.txt").toString().split(" ").map(Number);
3+
const [N, M] = input;
4+
let arr = [];
5+
for (let i = 1; i <= N; i++) arr.push(i);
6+
let visited = new Array(N).fill(false);
7+
let selected = [];
8+
9+
let answer = "";
10+
function backtrack(arr, depth) {
11+
if (depth === M) {
12+
let result = [];
13+
for (let i of selected) result.push(arr[i]);
14+
for (let x of result) answer += x + " ";
15+
answer += "\n";
16+
return;
17+
}
18+
for (let i = 0; i < arr.length; i++) {
19+
if (visited[i]) continue;
20+
selected.push(i);
21+
visited[i] = true;
22+
backtrack(arr, depth + 1);
23+
selected.pop();
24+
visited[i] = false;
25+
}
26+
}
27+
backtrack(arr, 0);
28+
29+
console.log(answer);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const fs = require("fs");
2+
const input = fs.readFileSync("example.txt").toString().split(" ").map(Number);
3+
const [N, M] = input;
4+
5+
let selected = [];
6+
let answer = "";
7+
8+
function backtrack(start, depth) {
9+
if (depth === M) {
10+
answer += selected.join(" ") + "\n";
11+
return;
12+
}
13+
14+
for (let i = start; i <= N; i++) {
15+
// `start`부터 탐색하여 오름차순 조합 유지
16+
selected.push(i);
17+
backtrack(i + 1, depth + 1); // 다음 탐색은 `i + 1`부터
18+
selected.pop(); // 백트래킹 (되돌아가기)
19+
}
20+
}
21+
22+
backtrack(1, 0);
23+
console.log(answer);
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
const fs = require("fs");
2+
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
3+
4+
const [N, S] = input[0].split(" ").map(Number);
5+
const numbers = input[1].split(" ").map(Number);
6+
7+
let count = 0;
8+
9+
function backtrack(index, sum) {
10+
if (index === N) {
11+
return;
12+
}
13+
14+
sum += numbers[index];
15+
16+
if (sum === S) {
17+
count++;
18+
}
19+
20+
backtrack(index + 1, sum);
21+
22+
backtrack(index + 1, sum - numbers[index]);
23+
}
24+
25+
backtrack(0, 0);
26+
27+
console.log(count);
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
function isPrime(num) {
2+
if (num === 0) return false;
3+
if (num === 1) return false;
4+
// 반복문 수행 횟수를 줄였다
5+
for (let i = 2; i <= num / 2; i++) {
6+
if (num % i === 0) return false;
7+
}
8+
return true;
9+
}
10+
11+
const getPermutations = (arr, num) => {
12+
const results = [];
13+
14+
if (num === 1) return arr.map((v) => [v]);
15+
16+
arr.forEach((fixed, index, origin) => {
17+
const rest = [...origin.slice(0, index), ...origin.slice(index + 1)];
18+
19+
const permutations = getPermutations(rest, num - 1);
20+
21+
const attached = permutations.map((v) => [fixed, ...v]);
22+
23+
results.push(...attached);
24+
});
25+
26+
return results;
27+
};
28+
29+
function solution(numbers) {
30+
let arr = numbers.split("");
31+
let answer = [];
32+
for (let i = 0; i < arr.length; i++) {
33+
let combination = getPermutations(arr, i + 1);
34+
for (let j = 0; j < combination.length; j++) {
35+
let sum = "";
36+
37+
for (let k = 0; k < combination[j].length; k++) {
38+
sum = sum + combination[j][k];
39+
}
40+
answer.push(Number(sum));
41+
}
42+
}
43+
let a = new Set(answer);
44+
let array = Array.from(a);
45+
let count = 0;
46+
for (let i = 0; i < array.length; i++) {
47+
if (isPrime(array[i])) {
48+
count++;
49+
}
50+
}
51+
return count;
52+
}

Moonjonghoo/sort/H-index.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
function solution(citations) {
2+
// 인용 수를 내림차순으로 정렬
3+
citations.sort((a, b) => b - a);
4+
5+
let h = 0;
6+
// 논문 수와 인용 수 비교
7+
for (let i = 0; i < citations.length; i++) {
8+
if (citations[i] >= i + 1) {
9+
h = i + 1;
10+
} else {
11+
break;
12+
}
13+
}
14+
return h;
15+
}

Moonjonghoo/sort/K번쨰수.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
function solution(array, commands) {
2+
var answer = [];
3+
4+
for (let i = 0; i < commands.length; i++) {
5+
let newarr;
6+
for (let j = 0; j < commands[i].length; j++) {
7+
newarr = array
8+
.slice(commands[i][0] - 1, commands[i][1])
9+
.sort((a, b) => a - b);
10+
}
11+
answer.push(newarr[commands[i][2] - 1]);
12+
}
13+
return answer;
14+
}

Moonjonghoo/sort/가장_큰_수.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//TODO: 풀어야됨 모르겠음
2+
function solution(numbers) {
3+
let result = numbers
4+
.map((num) => num.toString())
5+
.sort((a, b) => b + a - (a + b))
6+
.join("");
7+
return result[0] === "0" ? "0" : result;
8+
}
9+
10+
console.log(solution([6, 10, 2]));
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function solution(numbers) {
2+
var answer = [];
3+
for (let i = 0; i < numbers.length; i++) {
4+
for (let j = i + 1; j < numbers.length; j++) {
5+
answer.push(numbers[i] + numbers[j]);
6+
}
7+
}
8+
9+
return [...new Set(answer)].sort((a, b) => a - b);
10+
}
11+
12+
console.log(solution([2, 1, 3, 4, 1]));
13+
console.log(solution([5, 0, 2, 7]));

example.txt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1 @@
1-
4 5 1
2-
1 2
3-
1 3
4-
1 4
5-
2 4
6-
3 4
1+

0 commit comments

Comments
 (0)