From cace7c5048459116e2521af3ccd05b87f80acd30 Mon Sep 17 00:00:00 2001 From: bona1122 Date: Wed, 19 Mar 2025 23:50:43 +0900 Subject: [PATCH 1/5] =?UTF-8?q?Pick=20two=20sum=20/=20=EC=A4=91=EA=B8=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bona1122/[week9]Sort/Pick_two_sum.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 bona1122/[week9]Sort/Pick_two_sum.js diff --git a/bona1122/[week9]Sort/Pick_two_sum.js b/bona1122/[week9]Sort/Pick_two_sum.js new file mode 100644 index 0000000..e5f84c3 --- /dev/null +++ b/bona1122/[week9]Sort/Pick_two_sum.js @@ -0,0 +1,14 @@ +// https://school.programmers.co.kr/learn/courses/30/lessons/68644 + +const solution = numbers => { + const set = new Set(); + + for(let i = 0; i < numbers.length; i++){ + for(let j = i + 1; j a - b) +} \ No newline at end of file From 20a65564cf724bc56e87d9d2ea3357d4c3567cc0 Mon Sep 17 00:00:00 2001 From: bona1122 Date: Wed, 19 Mar 2025 23:51:31 +0900 Subject: [PATCH 2/5] =?UTF-8?q?Three=20musketeers=20/=20=EC=A4=91=EA=B8=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bona1122/[week9]Sort/Three_musketeers.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 bona1122/[week9]Sort/Three_musketeers.js diff --git a/bona1122/[week9]Sort/Three_musketeers.js b/bona1122/[week9]Sort/Three_musketeers.js new file mode 100644 index 0000000..c7130d8 --- /dev/null +++ b/bona1122/[week9]Sort/Three_musketeers.js @@ -0,0 +1,24 @@ +// https://school.programmers.co.kr/learn/courses/30/lessons/131705 + +const solution = (number) => { + // 학생은 각자 정수번호가짐 + // 세명의 번호를 더해서 0이 되면 삼총사, 삼총사 만드는 가짓수 구하기 + let result = 0 + const selected = Array(3).fill(0) + const dfs = (depth, start) => { + if (depth === 3) { + let sum = 0 + for (let i of selected) { + sum += number[i] + } + if (sum === 0) result++ + return + } + for (let i = start; i < number.length; i++) { + selected[depth] = i + dfs(depth + 1, i + 1) + } + } + dfs(0, 0) + return result +} From d3ebaa688c46a69c28bffd731d4a0e3d94c36caf Mon Sep 17 00:00:00 2001 From: bona1122 Date: Wed, 19 Mar 2025 23:52:05 +0900 Subject: [PATCH 3/5] =?UTF-8?q?Largest=20number=20/=20=EC=8B=AC=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bona1122/[week9]Sort/Largest_number.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 bona1122/[week9]Sort/Largest_number.js diff --git a/bona1122/[week9]Sort/Largest_number.js b/bona1122/[week9]Sort/Largest_number.js new file mode 100644 index 0000000..d30577f --- /dev/null +++ b/bona1122/[week9]Sort/Largest_number.js @@ -0,0 +1,12 @@ +// https://school.programmers.co.kr/learn/courses/30/lessons/42746 + +function solution(numbers) { + const convertString = numbers.map((number) => number.toString()) + const sorted = convertString.sort((a, b) => { + const AB = Number(a + b) + const BA = Number(b + a) + return BA - AB + }) + const result = sorted.join("") + return result[0] === "0" ? "0" : result +} From 52dfb6191f4483959a4d8dda089ac43d68669406 Mon Sep 17 00:00:00 2001 From: bona1122 Date: Wed, 19 Mar 2025 23:52:29 +0900 Subject: [PATCH 4/5] =?UTF-8?q?H=20index=20/=20=EC=8B=AC=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bona1122/[week9]Sort/H_index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 bona1122/[week9]Sort/H_index.js diff --git a/bona1122/[week9]Sort/H_index.js b/bona1122/[week9]Sort/H_index.js new file mode 100644 index 0000000..d56ae6a --- /dev/null +++ b/bona1122/[week9]Sort/H_index.js @@ -0,0 +1,16 @@ +// https://school.programmers.co.kr/learn/courses/30/lessons/42747 +// 핵심: 논문을 인용 횟수 기준 내림차순으로 정렬한 후, +// 논문의 개수(인덱스+1)가 해당 논문의 인용 횟수보다 작거나 같은 최대 지점을 찾는 것 + +function solution(citations) { + citations = citations.sort((a, b) => b - a) + + let i = 0 // 현재까지 확인한 논문의 인덱스 + // i+1 <= citations[i]가 참이면: + // "i+1번 이상 인용된 논문이 i+1편 이상"이라는 의미 + while (i + 1 <= citations[i]) { + i++ + } + + return i +} From f42f345c597ce3703a50dac7ab9db0077df0f514 Mon Sep 17 00:00:00 2001 From: bona1122 Date: Wed, 19 Mar 2025 23:52:47 +0900 Subject: [PATCH 5/5] =?UTF-8?q?File=20sort=20/=20=EC=8B=AC=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bona1122/[week9]Sort/File_sort.js | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 bona1122/[week9]Sort/File_sort.js diff --git a/bona1122/[week9]Sort/File_sort.js b/bona1122/[week9]Sort/File_sort.js new file mode 100644 index 0000000..999dcdd --- /dev/null +++ b/bona1122/[week9]Sort/File_sort.js @@ -0,0 +1,33 @@ +// https://school.programmers.co.kr/learn/courses/30/lessons/17686 + +function solution(files) { + const regex = /([^0-9]+)([0-9]+)(.*)/ + files = files.map((file, idx) => ({ + name: file, + parts: file.match(regex), + originalIndex: idx, + })) + + files = files.sort((a, b) => { + { + // HEAD 부분 비교 (대소문자 무시) + const headA = a.parts[1].toLowerCase() + const headB = b.parts[1].toLowerCase() + + if (headA < headB) return -1 + if (headA > headB) return 1 + + // HEAD가 같으면 NUMBER 부분 비교 (숫자로 비교) + const numberA = Number(a.parts[2]) + const numberB = Number(b.parts[2]) + + if (numberA < numberB) return -1 + if (numberA > numberB) return 1 + + // HEAD와 NUMBER가 모두 같으면 원래 순서 유지 + return a.originalIndex - b.originalIndex + } + }) + + return files.map((file) => file.name) +}