Skip to content

Commit 3df3ec8

Browse files
authored
Merge pull request #444 from taekwon-dev/main
[์œคํƒœ๊ถŒ] Week5 ๋ฌธ์ œ ํ’€์ด
2 parents 0e98b10 + 9194aa9 commit 3df3ec8

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

โ€Ž3sum/taekwon-dev.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n^2)
3+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
4+
*/
5+
class Solution {
6+
public List<List<Integer>> threeSum(int[] nums) {
7+
int left, right, sum;
8+
List<List<Integer>> results = new ArrayList<>();
9+
Arrays.sort(nums);
10+
11+
for (int i = 0; i < nums.length - 2; i++) {
12+
if (i > 0 && nums[i] == nums[i - 1]) {
13+
continue;
14+
}
15+
16+
left = i + 1;
17+
right = nums.length - 1;
18+
19+
while (left < right) {
20+
sum = nums[i] + nums[left] + nums[right];
21+
22+
if (sum < 0) {
23+
left++;
24+
} else if (sum > 0) {
25+
right--;
26+
} else {
27+
results.add(Arrays.asList(nums[i], nums[left], nums[right]));
28+
29+
while (left < right && nums[left] == nums[left + 1]) {
30+
left++;
31+
}
32+
while (left < right && nums[right] == nums[right - 1]) {
33+
right--;
34+
}
35+
left++;
36+
right--;
37+
}
38+
}
39+
}
40+
return results;
41+
}
42+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
3+
* - ๋ฌธ์ œ ์กฐ๊ฑด 1 <= prices.length <= 10^5 ๋ฅผ ๋ณด๊ณ , ์šฐ์„  O(n^2)๋Š” ํ”ผํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ์šฐ์„ ํ•˜๊ฒŒ ๋จ.
4+
* - ๊ฒฐ๊ตญ ์ด ๋ฌธ์ œ๋Š” ๊ฐ ์ธ๋ฑ์Šค๊ฐ€ ๋‚ ์งœ ๊ฐœ๋…์œผ๋กœ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ˆœ์ฐจ์ ์œผ๋กœ ํ˜๋Ÿฌ๊ฐ. (์ตœ๋Œ€ ์ด์ต์„ ๊ณ„์‚ฐํ•  ๋•Œ ๊ฒฐ๊ตญ ๊ฐ ์ผ์ž ๋ณ„๋กœ ๋‚ด๊ฐ€ ์–ผ๋งˆ์˜ ์ด๋“์„ ๋ดค๋Š”์ง€๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ์ด ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ๊ณ ๋ฅด๋ฉด ๋˜๋Š” ๊ตฌ์กฐ)
5+
* - ๋”ฐ๋ผ์„œ ํ•œ ๋ฒˆ์˜ ์ˆœํšŒ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ์Œ
6+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
7+
*/
8+
class Solution {
9+
public int maxProfit(int[] prices) {
10+
int minPrice = prices[0];
11+
int maxProfit = 0;
12+
13+
for (int i = 1; i < prices.length; i++) {
14+
if (prices[i] < minPrice) {
15+
minPrice = prices[i];
16+
}
17+
maxProfit = Math.max(maxProfit, prices[i] - minPrice);
18+
}
19+
20+
return maxProfit;
21+
}
22+
}

โ€Žgroup-anagrams/taekwon-dev.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O (m * n)
3+
* - m: ๋ฌธ์ž์—ด ๊ฐœ์ˆ˜
4+
* - n: ๊ฐ ๋ฌธ์ž์—ด ๊ธธ์ด
5+
* - ๊ฐ ๋ฌธ์ž์—ด์—์„œ ๋นˆ๋„์ˆ˜ ๊ณ„์‚ฐ์„ ์œ„ํ•ด O(n)์ด ์†Œ์š”๋˜๋Š”๋ฐ, ์ด๋ฅผ ๊ฐ ๋ฌธ์ž์—ด๋งˆ๋‹ค ์ง„ํ–‰
6+
*
7+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O (m * n)
8+
* - m: ๋ฌธ์ž์—ด ๊ฐœ์ˆ˜
9+
* - n: ๊ฐ ๋ฌธ์ž์—ด ๊ธธ์ด
10+
* - ์ฃผ์–ด์ง„ ๋ชจ๋“  ๋ฌธ์ž์—ด์ด ๋ชจ๋‘ ์„œ๋กœ anagram์„ ๊ตฌ์„ฑํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ, ๋ชจ๋“  ๋ฌธ์ž์—ด ์ˆ˜๋งŒํผ ํ•„์š”ํ•จ
11+
*/
12+
class Solution {
13+
public List<List<String>> groupAnagrams(String[] strs) {
14+
Map<String, List<String>> map = new HashMap<>();
15+
16+
for (String str: strs) {
17+
int[] count = new int[26];
18+
for (int i = 0; i < str.length(); i++) {
19+
count[str.charAt(i) - 'a']++;
20+
}
21+
22+
StringBuilder sb = new StringBuilder();
23+
for (int i = 0; i < 26; i++) {
24+
sb.append("^").append(count[i]);
25+
}
26+
String candidate = sb.toString();
27+
if (!map.containsKey(candidate)) {
28+
map.put(candidate, new ArrayList<>());
29+
}
30+
map.get(candidate).add(str);
31+
}
32+
33+
return new ArrayList<>(map.values());
34+
}
35+
}

0 commit comments

Comments
ย (0)