Skip to content

Commit cf25207

Browse files
authored
Merge branch 'DaleStudy:main' into main
2 parents 2415f2d + e0d7d23 commit cf25207

File tree

217 files changed

+5792
-5
lines changed

Some content is hidden

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

217 files changed

+5792
-5
lines changed

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

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,19 @@ jobs:
1515
- name: Get PR labels
1616
id: pr-labels
1717
run: |
18+
echo "๐Ÿ” PR ๋ฒˆํ˜ธ: ${{ github.event.pull_request.number }}"
1819
pr_number="${{ github.event.pull_request.number }}"
20+
21+
echo "๐Ÿ“‹ PR ๋ผ๋ฒจ ์กฐํšŒ ์ค‘..."
1922
labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name')
23+
echo "ํ™•์ธ๋œ ๋ผ๋ฒจ: $labels_json"
24+
2025
if [ -n "$labels_json" ]; then
21-
echo "has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT
26+
has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false')
27+
echo "maintenance ๋ผ๋ฒจ ํฌํ•จ ์—ฌ๋ถ€: $has_maintenance"
28+
echo "has_maintenance=$has_maintenance" >> $GITHUB_OUTPUT
2229
else
30+
echo "maintenance ๋ผ๋ฒจ์ด ์—†๋Š” PR์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ๋ช… ๊ทœ์น™ ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค."
2331
echo "has_maintenance=false" >> $GITHUB_OUTPUT
2432
fi
2533
env:
@@ -28,35 +36,46 @@ jobs:
2836
# ์ค„๋ฐ”๊ฟˆ ์ฒดํฌ
2937
- name: Check for missing end line breaks
3038
run: |
31-
# ๋”ฐ์˜ดํ‘œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ํŒŒ์ผ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
39+
echo "๐Ÿ” ์ค„๋ฐ”๊ฟˆ ๊ฒ€์‚ฌ ์‹œ์ž‘"
40+
echo "๊ธฐ์ค€ ์ปค๋ฐ‹: ${{ github.event.pull_request.base.sha }}"
41+
echo "ํ˜„์žฌ ์ปค๋ฐ‹: ${{ github.sha }}"
42+
3243
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
3344
success=true
3445
35-
echo "๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ๋ชฉ๋ก:"
46+
echo "๐Ÿ“ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ๋ชฉ๋ก:"
3647
echo "$files"
3748
3849
echo "## ์ค„๋ฐ”๊ฟˆ ๋ˆ„๋ฝ ํŒŒ์ผ" >> $GITHUB_STEP_SUMMARY
3950
for file in $files; do
51+
echo "๊ฒ€์‚ฌ ์ค‘: $file"
4052
if [ -s "$file" ] && [ "$(tail -c 1 $file | wc -l)" -eq 0 ]; then
41-
echo "๋ฐœ๊ฒฌ๋œ ์ค„๋ฐ”๊ฟˆ ๋ˆ„๋ฝ: $file"
53+
echo "โŒ ์ค„๋ฐ”๊ฟˆ ๋ˆ„๋ฝ: $file"
4254
echo "- $file" >> $GITHUB_STEP_SUMMARY
4355
success=false
56+
else
57+
echo "โœ… ์ •์ƒ: $file"
4458
fi
4559
done
4660
4761
if [ "$success" = false ]; then
62+
echo "โš ๏ธ ์ค„๋ฐ”๊ฟˆ ๊ฒ€์‚ฌ ์‹คํŒจ"
4863
echo -e "\n:warning: ํŒŒ์ผ ๋์˜ ๋ˆ„๋ฝ๋œ ์ค„๋ฐ”๊ฟˆ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”." >> $GITHUB_STEP_SUMMARY
4964
exit 1
65+
else
66+
echo "โœ… ๋ชจ๋“  ํŒŒ์ผ์˜ ์ค„๋ฐ”๊ฟˆ ์ •์ƒ"
5067
fi
5168
5269
# ์ œ์–ด๋ฌธ์ž ์ฒดํฌ
5370
- name: Check for control characters in filenames
5471
run: |
72+
echo "๐Ÿ” ํŒŒ์ผ๋ช… ์ œ์–ด๋ฌธ์ž ๊ฒ€์‚ฌ ์‹œ์ž‘"
5573
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | tr -d '"')
5674
success=true
5775
5876
echo "## ์ œ์–ด๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ๋ช…" >> $GITHUB_STEP_SUMMARY
5977
for file in $files; do
78+
echo "๊ฒ€์‚ฌ ์ค‘: $file"
6079
# basename์œผ๋กœ ํŒŒ์ผ๋ช…๋งŒ ์ถ”์ถœํ•˜๊ณ  ๋”ฐ์˜ดํ‘œ ์ œ๊ฑฐ
6180
filename=$(basename "$file" | tr -d '"')
6281
@@ -71,43 +90,66 @@ jobs:
7190
7291
# ์ด์Šค์ผ€์ดํ”„ ์‹œํ€€์Šค ์ฒดํฌ
7392
[[ "$filename" =~ (\\[0-7]{1,3}|\\x[0-9a-fA-F]{1,2}) ]]; then
93+
echo "โŒ ์ œ์–ด๋ฌธ์ž ๋ฐœ๊ฒฌ: $file"
7494
echo "- $file (์ œ์–ด๋ฌธ์ž ํฌํ•จ)" >> $GITHUB_STEP_SUMMARY
7595
success=false
96+
else
97+
echo "โœ… ์ •์ƒ: $file"
7698
fi
7799
done
78100
79101
if [ "$success" = false ]; then
102+
echo "โš ๏ธ ์ œ์–ด๋ฌธ์ž ๊ฒ€์‚ฌ ์‹คํŒจ"
80103
echo -e "\n:warning: ํŒŒ์ผ๋ช…์—์„œ ์ œ์–ด๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ด ์ฃผ์„ธ์š”." >> $GITHUB_STEP_SUMMARY
81104
exit 1
105+
else
106+
echo "โœ… ๋ชจ๋“  ํŒŒ์ผ๋ช…์ด ์ œ์–ด๋ฌธ์ž ์—†์ด ์ •์ƒ"
82107
fi
83108
84109
# ํŒŒ์ผ๋ช… ๊ทœ์น™ ์ฒดํฌ - maintenance ๋ผ๋ฒจ์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰
85110
- name: Check filename rules
86111
if: ${{ steps.pr-labels.outputs.has_maintenance != 'true' }}
87112
run: |
88-
files=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | tr -d '"')
113+
echo "๐Ÿ” ํŒŒ์ผ๋ช… ๊ทœ์น™ ๊ฒ€์‚ฌ ์‹œ์ž‘"
114+
echo "PR ์ž‘์„ฑ์ž: ${{ github.event.pull_request.user.login }}"
115+
116+
# PR์˜ ๊ณตํ†ต ์กฐ์ƒ ์ปค๋ฐ‹์„ ์ฐพ์•„์„œ merge base๋กœ ์„ค์ •
117+
merge_base=$(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
118+
echo "Merge base ์ปค๋ฐ‹: $merge_base"
119+
120+
files=$(git diff --name-only $merge_base ${{ github.event.pull_request.head.sha }} | tr -d '"')
89121
pr_author="${{ github.event.pull_request.user.login }}"
90122
success=true
91123
124+
echo "๐Ÿ“ ๊ฒ€์‚ฌํ•  ํŒŒ์ผ ๋ชฉ๋ก:"
125+
echo "$files"
126+
92127
echo "## ํŒŒ์ผ๋ช… ๊ทœ์น™ ์œ„๋ฐ˜" >> $GITHUB_STEP_SUMMARY
93128
for file in $files; do
94129
if [ -f "$file" ]; then
95130
131+
echo "๊ฒ€์‚ฌ ์ค‘: $file"
96132
# ํŒŒ์ผ๋ช…๋งŒ ์ถ”์ถœ (๊ฒฝ๋กœ ์ œ์™ธ)
97133
filename=$(basename "$file")
98134
99135
# ํŒŒ์ผ๋ช…์ด GitHub๊ณ„์ •๋ช…์ธ์ง€ ํ™•์ธ
100136
shopt -s nocasematch
101137
if [[ ! "$filename" = "$pr_author"* ]]; then
138+
echo "โŒ ๊ทœ์น™ ์œ„๋ฐ˜: $file"
102139
echo "- $file" >> $GITHUB_STEP_SUMMARY
103140
success=false
141+
else
142+
echo "โœ… ์ •์ƒ: $file"
104143
fi
105144
fi
106145
done
107146
108147
if [ "$success" = false ]; then
148+
echo "โš ๏ธ ํŒŒ์ผ๋ช… ๊ทœ์น™ ๊ฒ€์‚ฌ ์‹คํŒจ"
109149
echo -e "\n:warning: ํŒŒ์ผ๋ช…์€ ๋ฐ˜๋“œ์‹œ 'GitHub๊ณ„์ •๋ช…' ๋˜๋Š” 'GitHub๊ณ„์ •๋ช…-xxx' ํ˜•์‹์œผ๋กœ ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: ${pr_author}.ts, ${pr_author}-1.ts, ${pr_author}-2.ts)" >> $GITHUB_STEP_SUMMARY
110150
exit 1
151+
else
152+
echo "โœ… ๋ชจ๋“  ํŒŒ์ผ๋ช…์ด ๊ทœ์น™์— ๋งž๊ฒŒ ์ •์ƒ"
111153
fi
112154
env:
113155
GH_TOKEN: ${{ github.token }}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
3+
'''
4+
ํ’€์ด:
5+
์ค‘๋ณต๋œ ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
6+
7+
hash set ์œผ๋กœ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ 
8+
๊ธฐ์กด nums ์˜ ๊ธธ์ด์™€ ์ค‘๋ณต ์ œ๊ฑฐ๋œ nums_set ์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™์€์ง€ return ํ–ˆ์Šต๋‹ˆ๋‹ค.
9+
10+
์‹œ๊ฐ„ ๋ณต์žก๋„:
11+
O(n) - has set ์„ ๋งŒ๋“œ๋Š” ์‹œ๊ฐ„
12+
13+
๊ณต๊ฐ„ ๋ณต์žก๋„:
14+
O(n) - n๊ฐœ์˜ ์š”์†Œ๋ฅผ set์— ๋‹ด๊ธฐ ๋•Œ๋ฌธ
15+
'''
16+
17+
18+
class Solution:
19+
def containsDuplicate(self, nums: List[int]) -> bool:
20+
nums_set = set(nums)
21+
return len(nums_set) != len(nums)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.
2+
3+
def containsDuplicate(nums):
4+
seen = set()
5+
for num in nums:
6+
if num in seen:
7+
return True
8+
seen.add(num)
9+
return False
10+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import java.util.Arrays;
2+
import java.util.stream.Collectors;
3+
4+
class Solution {
5+
public boolean containsDuplicate(int[] nums) {
6+
/***
7+
compare length of array and length of set.
8+
O(n) given that n is length of array nums
9+
*/
10+
return nums.length > Arrays.stream(nums).boxed().collect(Collectors.toSet()).size();
11+
}
12+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(n)
2+
3+
/**
4+
* @param {number[]} nums
5+
* @return {boolean}
6+
*/
7+
var containsDuplicate = function (nums) {
8+
const seen = new Set();
9+
for (let num of nums) {
10+
if (seen.has(num)) {
11+
return true; // ์ค‘๋ณต ๋ฐœ๊ฒฌ
12+
}
13+
seen.add(num);
14+
}
15+
return false; // ๋ชจ๋“  ์š”์†Œ๊ฐ€ ๊ณ ์œ 
16+
};
17+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from typing import List
2+
3+
class Solution:
4+
def containsDuplicate(self, nums: List[int]) -> bool:
5+
dict = {}
6+
for num in nums:
7+
dict[num] = dict.get(num, 0) + 1
8+
if dict[num] > 1:
9+
return True
10+
return False
11+
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
๏ปฟclass Solution(object):
2+
def containsDuplicate(self, nums):
3+
"""
4+
:type nums: List[int]
5+
:rtype: bool
6+
"""
7+
#ํ•ด์„
8+
#sets๋Š” ๋ณต์ˆ˜ ์š”์†Œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค(sets don't allow duplicate elements.)
9+
#๋งŒ์•ฝ set์— ๊ธฐ๋ฐ˜๋œ list๊ฐ€ ๊ธฐ์กด nums์™€ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด duplicate element๊ฐ€ ์žˆ์—ˆ๋‹ค๋Š” ๋œป์ด๋‹ค.
10+
#If the length of the set created from nums is different from the original list(nums), It means there are duplicates.
11+
12+
#Big O
13+
#N: ์ฃผ์–ด์ง„ ๋ฐฐ์—ด nums์˜ ๊ธธ์ด(Length of the input list nums)
14+
15+
#Time Complexity: O(N)
16+
#- set์€ nums์˜ ๊ธธ์ด n์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ƒ์„ฑ๋œ๋‹ค(Creating a set from nums): O(N)
17+
#- ์ƒ์„ฑ๋œ list์™€ ๊ธฐ์กด nums์™€์˜ ๋น„๊ต๋Š” ์ƒ์ˆ˜(Comparing the lengths between created list and original list) : O(1)
18+
19+
#Space Complexity: O(N)
20+
#-set์€ nums์˜ ๊ธธ์ด์— ์˜ํ•ด ์ƒ์„ฑ๋˜๋ฏ€๋กœ n์— ์˜ํ–ฅ๋ฐ›์Œ(The set requires extra space depends on the size of nums) : O(N)
21+
return len(list(set(nums))) != len(nums) #set๋œ list์™€ ๊ธฐ์กด nums์˜ len์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด true(duplicate), ์•„๋‹ˆ๋ฉด false
22+
23+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {boolean}
4+
*/
5+
var containsDuplicate = function (nums) {
6+
return nums.length !== new Set(nums).size;
7+
};
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
"""
2+
Title: 217. Contains Duplicate
3+
Link: https://leetcode.com/problems/contains-duplicate/
4+
5+
Summary:
6+
- ์ฃผ์–ด์ง„ ๋ฐฐ์—ด `nums`์—์„œ ์–ด๋–ค ๊ฐ’์ด ํ•œ ๋ฒˆ ์ด์ƒ ๋“ฑ์žฅํ•˜๋ฉด True๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋ฐฐ์—ด์˜ ๋ชจ๋“  ๊ฐ’์ด ์œ ์ผํ•œ ๊ฒฝ์šฐ์—๋Š” False๋ฅผ ๋ฐ˜ํ™˜ํ•จ
7+
- Input: `nums = [1,2,3,1]`
8+
- Output: `True`
9+
10+
Conditions:
11+
- ์ค‘๋ณต์ด ์žˆ์œผ๋ฉด: ๋ฐฐ์—ด์—์„œ ์ ์–ด๋„ ํ•˜๋‚˜์˜ ๊ฐ’์ด ๋‘ ๋ฒˆ ์ด์ƒ ๋“ฑ์žฅํ•˜๋ฉด `True` ๋ฐ˜ํ™˜
12+
- ์ค‘๋ณต์ด ์—†์œผ๋ฉด: ๋ฐฐ์—ด์˜ ๋ชจ๋“  ๊ฐ’์ด ์œ ์ผํ•˜๋ฉด `False` ๋ฐ˜ํ™˜
13+
"""
14+
15+
"""
16+
First Try
17+
Time Complexity:
18+
- O(n) * O(n) = O(n^2): `for` ๋ฃจํ”„์—์„œ `nums.count(i)`๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฏ€๋กœ, ์ „์ฒด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” `O(n^2)`
19+
"""
20+
class Solution:
21+
def containsDuplicate(self, nums: List[int]) -> bool:
22+
for i in nums:
23+
if nums.count(i) > 1:
24+
return True
25+
return False
26+
27+
"""
28+
Second Try (set๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฏธ ๋ณธ ์š”์†Œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ถ”์ ํ•˜๋Š” ๋ฐฉ๋ฒ•)
29+
Time Complexity:
30+
- O(n): `for` ๋ฃจํ”„์—์„œ ๊ฐ ์ˆซ์ž์— ๋Œ€ํ•ด `in` ์—ฐ์‚ฐ๊ณผ `add` ์—ฐ์‚ฐ์ด ์ƒ์ˆ˜ ์‹œ๊ฐ„ O(1)์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ, ์ „์ฒด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)
31+
"""
32+
class Solution:
33+
def containsDuplicate(self, nums: List[int]) -> bool:
34+
seen = set()
35+
for i in nums:
36+
if i in seen:
37+
return True
38+
seen.add(i)
39+
return False
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package leetcode_study
2+
3+
class SolutionContainsDuplicate {
4+
fun containsDuplicate(nums: IntArray): Boolean {
5+
val size = nums.size
6+
val numsToSet = nums.toSet()
7+
8+
return size != numsToSet.size
9+
}
10+
}

0 commit comments

Comments
ย (0)