Skip to content

Commit 4ab4edc

Browse files
authored
[Bona1122] 25.03.13 (#54)
* Pick two sum / 중급 * Three musketeers / 중급 * Largest number / 심화 * H index / 심화 * File sort / 심화
1 parent a4db650 commit 4ab4edc

File tree

5 files changed

+99
-0
lines changed

5 files changed

+99
-0
lines changed

bona1122/[week9]Sort/File_sort.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// https://school.programmers.co.kr/learn/courses/30/lessons/17686
2+
3+
function solution(files) {
4+
const regex = /([^0-9]+)([0-9]+)(.*)/
5+
files = files.map((file, idx) => ({
6+
name: file,
7+
parts: file.match(regex),
8+
originalIndex: idx,
9+
}))
10+
11+
files = files.sort((a, b) => {
12+
{
13+
// HEAD 부분 비교 (대소문자 무시)
14+
const headA = a.parts[1].toLowerCase()
15+
const headB = b.parts[1].toLowerCase()
16+
17+
if (headA < headB) return -1
18+
if (headA > headB) return 1
19+
20+
// HEAD가 같으면 NUMBER 부분 비교 (숫자로 비교)
21+
const numberA = Number(a.parts[2])
22+
const numberB = Number(b.parts[2])
23+
24+
if (numberA < numberB) return -1
25+
if (numberA > numberB) return 1
26+
27+
// HEAD와 NUMBER가 모두 같으면 원래 순서 유지
28+
return a.originalIndex - b.originalIndex
29+
}
30+
})
31+
32+
return files.map((file) => file.name)
33+
}

bona1122/[week9]Sort/H_index.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// https://school.programmers.co.kr/learn/courses/30/lessons/42747
2+
// 핵심: 논문을 인용 횟수 기준 내림차순으로 정렬한 후,
3+
// 논문의 개수(인덱스+1)가 해당 논문의 인용 횟수보다 작거나 같은 최대 지점을 찾는 것
4+
5+
function solution(citations) {
6+
citations = citations.sort((a, b) => b - a)
7+
8+
let i = 0 // 현재까지 확인한 논문의 인덱스
9+
// i+1 <= citations[i]가 참이면:
10+
// "i+1번 이상 인용된 논문이 i+1편 이상"이라는 의미
11+
while (i + 1 <= citations[i]) {
12+
i++
13+
}
14+
15+
return i
16+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// https://school.programmers.co.kr/learn/courses/30/lessons/42746
2+
3+
function solution(numbers) {
4+
const convertString = numbers.map((number) => number.toString())
5+
const sorted = convertString.sort((a, b) => {
6+
const AB = Number(a + b)
7+
const BA = Number(b + a)
8+
return BA - AB
9+
})
10+
const result = sorted.join("")
11+
return result[0] === "0" ? "0" : result
12+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// https://school.programmers.co.kr/learn/courses/30/lessons/68644
2+
3+
const solution = numbers => {
4+
const set = new Set();
5+
6+
for(let i = 0; i < numbers.length; i++){
7+
for(let j = i + 1; j <numbers.length; j++){
8+
const num = numbers[i] + numbers[j]
9+
set.add(num)
10+
}
11+
}
12+
13+
return [...set].sort((a, b) => a - b)
14+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// https://school.programmers.co.kr/learn/courses/30/lessons/131705
2+
3+
const solution = (number) => {
4+
// 학생은 각자 정수번호가짐
5+
// 세명의 번호를 더해서 0이 되면 삼총사, 삼총사 만드는 가짓수 구하기
6+
let result = 0
7+
const selected = Array(3).fill(0)
8+
const dfs = (depth, start) => {
9+
if (depth === 3) {
10+
let sum = 0
11+
for (let i of selected) {
12+
sum += number[i]
13+
}
14+
if (sum === 0) result++
15+
return
16+
}
17+
for (let i = start; i < number.length; i++) {
18+
selected[depth] = i
19+
dfs(depth + 1, i + 1)
20+
}
21+
}
22+
dfs(0, 0)
23+
return result
24+
}

0 commit comments

Comments
 (0)