Skip to content

Commit 9dfb3e9

Browse files
committed
2 parents e7ad31f + 9c8fe48 commit 9dfb3e9

File tree

380 files changed

+11906
-204
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

380 files changed

+11906
-204
lines changed

โ€Ž.github/workflows/integration.yamlโ€Ž

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ name: Integration ๐Ÿ”„
22

33
on:
44
pull_request:
5+
merge_group:
56

67
jobs:
78
linelint:
89
runs-on: ubuntu-latest
10+
if: github.event_name == 'pull_request'
911
steps:
1012
- uses: actions/checkout@v4
1113
with:
@@ -17,11 +19,11 @@ jobs:
1719
run: |
1820
echo "๐Ÿ” PR ๋ฒˆํ˜ธ: ${{ github.event.pull_request.number }}"
1921
pr_number="${{ github.event.pull_request.number }}"
20-
22+
2123
echo "๐Ÿ“‹ PR ๋ผ๋ฒจ ์กฐํšŒ ์ค‘..."
2224
labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name')
2325
echo "ํ™•์ธ๋œ ๋ผ๋ฒจ: $labels_json"
24-
26+
2527
if [ -n "$labels_json" ]; then
2628
has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false')
2729
echo "maintenance ๋ผ๋ฒจ ํฌํ•จ ์—ฌ๋ถ€: $has_maintenance"

โ€Ž.github/workflows/management.yamlโ€Ž

Lines changed: 88 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ on:
1111
options:
1212
- approve-prs
1313
- merge-prs
14+
week:
15+
description: 'Week number to filter (optional, e.g., "1")'
16+
required: false
17+
type: string
18+
default: ""
1419
exclude_prs:
1520
description: 'PR numbers to exclude (comma-separated, e.g., "1972,1973")'
1621
required: false
@@ -40,11 +45,20 @@ jobs:
4045
excludes="[$(echo "$exclude_input" | sed 's/,/, /g')]"
4146
fi
4247
48+
# Build request payload
49+
week_input="${{ inputs.week }}"
50+
if [ -z "$week_input" ]; then
51+
payload="{\"repo_name\": \"${{ github.event.repository.name }}\", \"excludes\": $excludes}"
52+
else
53+
payload="{\"repo_name\": \"${{ github.event.repository.name }}\", \"week\": \"Week $week_input\", \"excludes\": $excludes}"
54+
fi
55+
56+
echo "์ฃผ์ฐจ ํ•„ํ„ฐ: ${week_input:-์ „์ฒด}"
4357
echo "์ œ์™ธํ•  PR: $excludes"
4458
4559
response=$(curl -s -X POST "https://github.dalestudy.com/approve-prs" \
4660
-H "Content-Type: application/json" \
47-
-d "{\"repo_name\": \"${{ github.event.repository.name }}\", \"excludes\": $excludes}")
61+
-d "$payload")
4862
4963
echo "response=$response" >> $GITHUB_OUTPUT
5064
echo "$response" | jq '.'
@@ -55,6 +69,10 @@ jobs:
5569
5670
success=$(echo "$response" | jq -r '.success // false')
5771
total=$(echo "$response" | jq -r '.total_open_prs // 0')
72+
week_filter=$(echo "$response" | jq -r '.week_filter // null')
73+
week_matched=$(echo "$response" | jq -r '.week_matched // 0')
74+
week_mismatched=$(echo "$response" | jq -r '.week_mismatched // 0')
75+
solving_excluded=$(echo "$response" | jq -r '.solving_excluded // 0')
5876
processed=$(echo "$response" | jq -r '.processed // 0')
5977
approved=$(echo "$response" | jq -r '.approved // 0')
6078
skipped=$(echo "$response" | jq -r '.skipped // 0')
@@ -69,18 +87,42 @@ jobs:
6987
fi
7088
7189
echo "" >> $GITHUB_STEP_SUMMARY
90+
if [ "$week_filter" != "null" ]; then
91+
echo "- ๐Ÿ—“๏ธ ์ฃผ์ฐจ ํ•„ํ„ฐ: **$week_filter**" >> $GITHUB_STEP_SUMMARY
92+
fi
7293
echo "- ๐Ÿ“‹ ์ „์ฒด Open PR: **$total**๊ฐœ" >> $GITHUB_STEP_SUMMARY
94+
if [ "$week_filter" != "null" ]; then
95+
echo "- โœ… $week_filter ๋งค์นญ: **$week_matched**๊ฐœ" >> $GITHUB_STEP_SUMMARY
96+
echo "- โŒ Week ๋ถˆ์ผ์น˜: **$week_mismatched**๊ฐœ" >> $GITHUB_STEP_SUMMARY
97+
echo "- ๐Ÿ”„ Solving ์ƒํƒœ ์ œ์™ธ: **$solving_excluded**๊ฐœ" >> $GITHUB_STEP_SUMMARY
98+
fi
7399
echo "- ๐Ÿ” ๊ฒ€์‚ฌํ•œ PR: **$processed**๊ฐœ" >> $GITHUB_STEP_SUMMARY
74100
echo "- โœ… ์Šน์ธํ•œ PR: **$approved**๊ฐœ" >> $GITHUB_STEP_SUMMARY
75101
echo "- โญ๏ธ ๊ฑด๋„ˆ๋›ด PR: **$skipped**๊ฐœ" >> $GITHUB_STEP_SUMMARY
76102
77103
# Show detailed results if available
78-
results=$(echo "$response" | jq -r '.results // []')
79-
if [ "$results" != "[]" ]; then
104+
result_count=$(echo "$response" | jq -r '.results | length')
105+
if [ "$result_count" -gt 0 ]; then
80106
echo "" >> $GITHUB_STEP_SUMMARY
81107
echo "### ๐Ÿ“ ์ƒ์„ธ ๊ฒฐ๊ณผ" >> $GITHUB_STEP_SUMMARY
82108
echo "" >> $GITHUB_STEP_SUMMARY
83-
echo "$response" | jq -r '.results[] | "- PR #\(.pr_number): \(.status) \(if .reason then "(\(.reason))" else "" end)"' >> $GITHUB_STEP_SUMMARY
109+
110+
echo "$response" | jq -c '.results[]' | while read -r item; do
111+
pr=$(echo "$item" | jq -r '.pr')
112+
title=$(echo "$item" | jq -r '.title')
113+
skipped=$(echo "$item" | jq -r '.skipped // false')
114+
approved=$(echo "$item" | jq -r '.approved // false')
115+
reason=$(echo "$item" | jq -r '.reason // ""')
116+
error=$(echo "$item" | jq -r '.error // ""')
117+
118+
if [ "$skipped" = "true" ]; then
119+
echo "- PR #$pr [$title]: โญ๏ธ skipped ($reason)" >> $GITHUB_STEP_SUMMARY
120+
elif [ "$approved" = "true" ]; then
121+
echo "- PR #$pr [$title]: โœ… approved" >> $GITHUB_STEP_SUMMARY
122+
else
123+
echo "- PR #$pr [$title]: โŒ failed (${error:-unknown})" >> $GITHUB_STEP_SUMMARY
124+
fi
125+
done
84126
fi
85127
86128
merge-prs:
@@ -105,13 +147,23 @@ jobs:
105147
excludes="[$(echo "$exclude_input" | sed 's/,/, /g')]"
106148
fi
107149
150+
# Build request payload
151+
week_input="${{ inputs.week }}"
108152
merge_method="merge"
153+
154+
if [ -z "$week_input" ]; then
155+
payload="{\"repo_name\": \"${{ github.event.repository.name }}\", \"merge_method\": \"$merge_method\", \"excludes\": $excludes}"
156+
else
157+
payload="{\"repo_name\": \"${{ github.event.repository.name }}\", \"merge_method\": \"$merge_method\", \"week\": \"Week $week_input\", \"excludes\": $excludes}"
158+
fi
159+
109160
echo "๋จธ์ง€ ๋ฐฉ์‹: $merge_method"
161+
echo "์ฃผ์ฐจ ํ•„ํ„ฐ: ${week_input:-์ „์ฒด}"
110162
echo "์ œ์™ธํ•  PR: $excludes"
111163
112164
response=$(curl -s -X POST "https://github.dalestudy.com/merge-prs" \
113165
-H "Content-Type: application/json" \
114-
-d "{\"repo_name\": \"${{ github.event.repository.name }}\", \"merge_method\": \"$merge_method\", \"excludes\": $excludes}")
166+
-d "$payload")
115167
116168
echo "response=$response" >> $GITHUB_OUTPUT
117169
echo "$response" | jq '.'
@@ -122,6 +174,10 @@ jobs:
122174
123175
success=$(echo "$response" | jq -r '.success // false')
124176
total=$(echo "$response" | jq -r '.total_open_prs // 0')
177+
week_filter=$(echo "$response" | jq -r '.week_filter // null')
178+
week_matched=$(echo "$response" | jq -r '.week_matched // 0')
179+
week_mismatched=$(echo "$response" | jq -r '.week_mismatched // 0')
180+
solving_excluded=$(echo "$response" | jq -r '.solving_excluded // 0')
125181
processed=$(echo "$response" | jq -r '.processed // 0')
126182
merged=$(echo "$response" | jq -r '.merged // 0')
127183
skipped=$(echo "$response" | jq -r '.skipped // 0')
@@ -138,16 +194,40 @@ jobs:
138194
139195
echo "" >> $GITHUB_STEP_SUMMARY
140196
echo "- ๐Ÿ”ง ๋จธ์ง€ ๋ฐฉ์‹: **$merge_method**" >> $GITHUB_STEP_SUMMARY
197+
if [ "$week_filter" != "null" ]; then
198+
echo "- ๐Ÿ—“๏ธ ์ฃผ์ฐจ ํ•„ํ„ฐ: **$week_filter**" >> $GITHUB_STEP_SUMMARY
199+
fi
141200
echo "- ๐Ÿ“‹ ์ „์ฒด Open PR: **$total**๊ฐœ" >> $GITHUB_STEP_SUMMARY
201+
if [ "$week_filter" != "null" ]; then
202+
echo "- โœ… $week_filter ๋งค์นญ: **$week_matched**๊ฐœ" >> $GITHUB_STEP_SUMMARY
203+
echo "- โŒ Week ๋ถˆ์ผ์น˜: **$week_mismatched**๊ฐœ" >> $GITHUB_STEP_SUMMARY
204+
echo "- ๐Ÿ”„ Solving ์ƒํƒœ ์ œ์™ธ: **$solving_excluded**๊ฐœ" >> $GITHUB_STEP_SUMMARY
205+
fi
142206
echo "- ๐Ÿ” ๊ฒ€์‚ฌํ•œ PR: **$processed**๊ฐœ" >> $GITHUB_STEP_SUMMARY
143207
echo "- โœ… ๋จธ์ง€ํ•œ PR: **$merged**๊ฐœ" >> $GITHUB_STEP_SUMMARY
144208
echo "- โญ๏ธ ๊ฑด๋„ˆ๋›ด PR: **$skipped**๊ฐœ" >> $GITHUB_STEP_SUMMARY
145209
146210
# Show detailed results if available
147-
results=$(echo "$response" | jq -r '.results // []')
148-
if [ "$results" != "[]" ]; then
211+
result_count=$(echo "$response" | jq -r '.results | length')
212+
if [ "$result_count" -gt 0 ]; then
149213
echo "" >> $GITHUB_STEP_SUMMARY
150214
echo "### ๐Ÿ“ ์ƒ์„ธ ๊ฒฐ๊ณผ" >> $GITHUB_STEP_SUMMARY
151215
echo "" >> $GITHUB_STEP_SUMMARY
152-
echo "$response" | jq -r '.results[] | "- PR #\(.pr_number): \(.status) \(if .reason then "(\(.reason))" else "" end)"' >> $GITHUB_STEP_SUMMARY
216+
217+
echo "$response" | jq -c '.results[]' | while read -r item; do
218+
pr=$(echo "$item" | jq -r '.pr')
219+
title=$(echo "$item" | jq -r '.title')
220+
skipped=$(echo "$item" | jq -r '.skipped // false')
221+
merged=$(echo "$item" | jq -r '.merged // false')
222+
reason=$(echo "$item" | jq -r '.reason // ""')
223+
error=$(echo "$item" | jq -r '.error // ""')
224+
225+
if [ "$skipped" = "true" ]; then
226+
echo "- PR #$pr [$title]: โญ๏ธ skipped ($reason)" >> $GITHUB_STEP_SUMMARY
227+
elif [ "$merged" = "true" ]; then
228+
echo "- PR #$pr [$title]: โœ… merged" >> $GITHUB_STEP_SUMMARY
229+
else
230+
echo "- PR #$pr [$title]: โŒ failed (${error:-unknown})" >> $GITHUB_STEP_SUMMARY
231+
fi
232+
done
153233
fi

โ€Ž3sum/8804who.pyโ€Ž

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution:
2+
def threeSum(self, nums: List[int]) -> List[List[int]]:
3+
temp = {}
4+
answer = {}
5+
nums.sort()
6+
for i in range(len(nums)):
7+
for j in range(i+1, len(nums)):
8+
if -(nums[i]+nums[j]) in temp:
9+
ans = str(nums[i])+','+str(nums[j])
10+
answer[ans] = 1
11+
temp[nums[i]] = 1
12+
temp_ans = []
13+
for ans in answer.keys():
14+
s1, s2 = ans.split(',')
15+
temp_ans.append([int(s1), int(s2), -(int(s1)+int(s2))])
16+
return temp_ans
17+

โ€Ž3sum/Baekwangho.tsโ€Ž

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
/**
2+
ํ•ฉ์‚ฐ์ด 0์ด ๋˜๋Š” ์„œ๋กœ์†Œ ์กฐํ•ฉ์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.. ์ขŒํ‘œ๊ฐ€ ๋‹ค๋ฅธ ๊ฐ™์€ ๊ฐ’์€ ํ—ˆ์šฉํ•˜๋˜,
3+
๊ฐ™์€ ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ์กฐํ•ฉ์€ ์ค‘๋ณต์„ ๋ถˆํ—ˆํ•œ๋‹ค.
4+
5+
๊ธฐ๋ณธ์ ์œผ๋กœ 3๊ฐ€์ง€ ์ˆ˜๋ฅผ ์ค‘๋ณต์—†์ด ์กฐํ•ฉํ•ด์„œ ๋ฝ‘์€ ๋‹ค์Œ, ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜์—ฌ set ์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ?
6+
7+
8+
function threeSum(nums: number[]): number[][] {
9+
const arraySet = new Set<string>();
10+
11+
for (let i = 0; i <= nums.length - 3; i++) {
12+
for (let j = i + 1; j <= nums.length - 2; j++) {
13+
for (let k = j + 1; k <= nums.length - 1; k++) {
14+
if (nums[i] + nums[j] + nums[k] === 0) {
15+
const sorted = [nums[i], nums[j], nums[k]];
16+
sorted.sort((a, b) => a - b);
17+
const string = sorted.join("#");
18+
arraySet.add(string);
19+
}
20+
}
21+
}
22+
}
23+
24+
return Array.from(arraySet).map((el) =>
25+
el.split("#").map((el) => Number(el))
26+
);
27+
}
28+
*/
29+
30+
/**
31+
์‹œ๊ฐ„ ์ดˆ๊ณผํ•ด๋ฒ„๋ ธ๋‹ค. ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ์„๊นŒ?
32+
two sum ์„ ๋ณด๋‹ˆ ํ•ด์‹œํ…Œ์ด๋ธ”์„ ์“ด๋‹ค๊ณ  ํ•œ๋‹ค. nums ๋ฅผ ํ•ด์‹œํ…Œ์ด๋ธ”๋กœ ๋ณ€ํ™˜ํ•˜๊ณ ,
33+
์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์—์„œ ์ด๋ฅผ ํ™œ์šฉํ•ด๋ณด์ž.
34+
35+
function threeSum(nums: number[]): number[][] {
36+
const arraySet = new Set<string>();
37+
const hash = new Map<number, number[]>();
38+
nums.forEach((val, idx) => {
39+
const idxes = hash.get(val);
40+
if (idxes && idxes.length) {
41+
hash.set(val, [...idxes, idx]);
42+
} else {
43+
hash.set(val, [idx]);
44+
}
45+
});
46+
47+
for (let i = 0; i < nums.length - 2; i++) {
48+
for (let j = i + 1; j < nums.length - 1; j++) {
49+
const idxes = hash.get(0 - (nums[i] + nums[j]));
50+
51+
idxes?.forEach((idx) => {
52+
if (idx != i && idx != j) {
53+
const sorted = [nums[i], nums[j], nums[idx]];
54+
sorted.sort((a, b) => a - b);
55+
const string = sorted.join("#");
56+
arraySet.add(string);
57+
}
58+
});
59+
}
60+
}
61+
62+
return Array.from(arraySet).map((el) =>
63+
el.split("#").map((el) => Number(el))
64+
);
65+
}
66+
67+
*/
68+
69+
/**
70+
... 0์œผ๋กœ๋งŒ ๊ฐ€๋“์ฐฌ ๋ฐฐ์—ด์—์„œ time limit ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.
71+
ํ’€์ด๋ฅผ ๋ณด๊ณ ์˜ค๋‹ˆ, ์œ„ ๋กœ์ง์—์„œ 0์œผ๋กœ ๊ฐ€๋“์ฐฌ arraySet ์„ ์ˆœํšŒํ•˜๋Š” ๊ณณ์—์„œ ๊ฒฐ๊ตญ O(n^3) ์ด ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค๋Š” ์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
72+
ํ™•์‹คํ•œ ๊ฒƒ์€, ์ •๋ ฌ์„ ์ถ”๊ฐ€ํ–ˆ์„ ๊ฒฝ์šฐ ์œ„ ๋กœ์ง๋„ ํ†ต๊ณผ ๊ฐ€๋Šฅํ•œ ์ •๋„๋กœ ๋งŒ๋“ค์–ด๋ณผ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ์‹ถ์—ˆ๋‹ค.
73+
74+
function threeSum(nums: number[]): number[][] {
75+
nums.sort((a, b) => a - b);
76+
const arraySet = new Set<string>();
77+
const hash = new Map<number, number[]>();
78+
79+
nums.forEach((val, idx) => {
80+
const idxes = hash.get(val);
81+
if (idxes && idxes.length) {
82+
hash.set(val, [...idxes, idx]);
83+
} else {
84+
hash.set(val, [idx]);
85+
}
86+
});
87+
88+
for (let i = 0; i < nums.length - 2; i++) {
89+
for (let j = i + 1; j < nums.length - 1; j++) {
90+
const idxes = hash.get(0 - (nums[i] + nums[j])) ?? [];
91+
92+
for (let k = 0; k < idxes.length; k++) {
93+
const idx = idxes[k];
94+
if (idx != i && idx != j) {
95+
const sorted = [nums[i], nums[j], nums[idx]];
96+
sorted.sort((a, b) => a - b);
97+
const string = sorted.join("#");
98+
arraySet.add(string);
99+
100+
break;
101+
}
102+
}
103+
}
104+
}
105+
106+
return Array.from(arraySet).map((el) =>
107+
el.split("#").map((el) => Number(el))
108+
);
109+
}
110+
111+
๊ทผ๋ฐ ์–ด๋–ป๊ฒŒ๋“  ๋ชป๋งŒ๋“ฆ.
112+
*/
113+
114+
/**
115+
์–ด์ œ ํ•ด๋‹ต์„ ๋ณด์•˜์œผ๋‹ˆ, ๋‹ค์‹œํ•œ๋ฒˆ ํ’€์–ด๋ณด์ž.
116+
ํ•ต์‹ฌ์€ ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ, ์ž๋ฃŒ๊ตฌ์กฐ์— ์–ฝ๋ฉ”์ด์ง€ ์•Š๋Š” ๊ฒƒ
117+
*/
118+
119+
function threeSum(nums: number[]): number[][] {
120+
nums.sort((a, b) => a - b);
121+
const results = [];
122+
123+
// [-4, -1, -1, 0, 1, 2]
124+
for (let i = 0; i < nums.length; i++) {
125+
while (nums[i - 1] === nums[i]) i++;
126+
127+
let low = i + 1;
128+
let high = nums.length - 1;
129+
while (low < high) {
130+
const sum = nums[i] + nums[low] + nums[high];
131+
if (sum < 0) {
132+
low++;
133+
} else if (sum > 0) {
134+
high--;
135+
} else {
136+
while (nums[high] === nums[high - 1]) high--;
137+
while (nums[low] === nums[low + 1]) low++;
138+
results.push([nums[i], nums[low], nums[high]]);
139+
low++;
140+
high--;
141+
}
142+
}
143+
}
144+
145+
return results;
146+
}

0 commit comments

Comments
ย (0)