Skip to content

Commit 420fbb9

Browse files
authored
Merge pull request #740 from kdh-92/main
[๊ถŒ๋™ํ˜„] Week 2
2 parents fcb2612 + bc33dc4 commit 420fbb9

File tree

4 files changed

+158
-0
lines changed

4 files changed

+158
-0
lines changed

โ€Ž3sum/kdh-92.javaโ€Ž

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* ํŠน์ด์‚ฌํ•ญ
3+
* ๋ฌธ์ œ๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ด ๋ชปํ•ด์„œ ํ’€์ด๋ฅผ ๋ณด๋ฉฐ ์ดํ•ดํ–ˆ๋‹ค.
4+
* ํ•ต์‹ฌ์€ ์ค‘๋ณต ์ฒ˜๋ฆฌ์™€ ๋ฌธ์ œ๋ฅผ ์ฐพ์•˜์„ ๋•Œ ์ข…๋ฃŒ๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹ค์Œ ํ•ญ๋ชฉ์„ ์ฐพ๋Š” ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™๋‹ค.
5+
* (์ถ”ํ›„ ๋ณต์Šต ์˜ˆ์ •)
6+
*/
7+
8+
class Solution {
9+
public List<List<Integer>> threeSum(int[] nums) {
10+
11+
// (1) ArrayList
12+
// ์‹œ๊ฐ„๋ณต์žก๋„ : O(N^2), ๊ณต๊ฐ„๋ณต์žก๋„ : O(N)
13+
List<List<Integer>> result = new ArrayList<>();
14+
Arrays.sort(nums);
15+
16+
for (int i = 0; i < nums.length; i++) {
17+
if (i > 0 && nums[i] == nums[i - 1]) continue;
18+
19+
int j = i + 1;
20+
int k = nums.length - 1;
21+
22+
while (j < k) {
23+
int sumNum = nums[i] + nums[j] + nums[k];
24+
25+
if (sumNum > 0) k--;
26+
else if (sumNum < 0) j++;
27+
else {
28+
result.add(Arrays.asList(nums[i], nums[j], nums[k]));
29+
j++;
30+
31+
while (nums[j] == nums[j - 1] && j < k) j++;
32+
}
33+
}
34+
}
35+
36+
return result;
37+
}
38+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public int climbStairs(int n) {
3+
// dp ์‘์šฉ ๋ฒ„์ „
4+
// ์‹œ๊ฐ„๋ณต์žก๋„ : O(N), ๊ณต๊ฐ„๋ณต์žก๋„ : O(1)
5+
6+
int prev = 1, curr = 1;
7+
8+
if (n == 1) return prev;
9+
10+
for (int i = 2; i < n; i++) {
11+
int now = curr + prev;
12+
prev = curr;
13+
curr = now;
14+
}
15+
16+
return curr;
17+
}
18+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* ํŠน์ด์‚ฌํ•ญ
3+
* TreeNode ์ดํ•ด & right ์„ค์ • ๋ถ€๋ถ„ ์ดํ•ด ํ•„์š”
4+
* - ์žฌ๊ท€ ํ˜ธ์ถœ ํ˜•ํƒœ๋กœ if ์กฐ๊ฑด ์ถ”๊ฐ€ (preStart > preorder.length -1 || inStart > inEnd) ์ผ ๊ฒฝ์šฐ์—” null ๋ฐ˜ํ™˜
5+
* - null์ผ ๋•Œ ์ƒํ™ฉ ํ…Œ์ŠคํŠธํ•˜๋ฉฐ ์ข€ ๋” ์‚ดํŽด๋ณด๊ธฐ
6+
*
7+
* - right
8+
* - preStart : preStart + inIdx - inStart + 1 (left ๋™์ผํ•˜๊ฒŒ preStart + 1์—์„œ inIdx - inStart ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์˜ค๋ฅธ์ชฝ ์˜์—ญ ํƒ์ƒ‰)
9+
*/
10+
11+
class Solution {
12+
public static TreeNode buildTree(int[] preorder, int[] inorder) {
13+
// (1) helper ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ๊ท€ํ˜ธ์ถœ ์‚ฌ์šฉ
14+
// ์‹œ๊ฐ„๋ณต์žก๋„ : O(N^2), ๊ณต๊ฐ„๋ณต์žก๋„ : O(N)
15+
16+
return helper(0, 0, inorder.length - 1, preorder, inorder);
17+
}
18+
19+
public static TreeNode helper(int preStart, int inStart, int inEnd, int[] preorder, int[] inorder) {
20+
if (preStart > preorder.length - 1 || inStart > inEnd) return null;
21+
TreeNode node = new TreeNode(preorder[preStart]);
22+
int inIdx = 0;
23+
24+
for (int i = inStart; i <= inEnd; i++) {
25+
if (node.val == inorder[i]) {
26+
inIdx = i;
27+
break;
28+
}
29+
}
30+
31+
node.left = helper(preStart + 1, inStart, inIdx - 1, preorder, inorder);
32+
node.right = helper(preStart + inIdx - inStart + 1, inIdx + 1, inEnd, preorder, inorder);
33+
34+
return node;
35+
}
36+
}

โ€Žvalid-anagram/kdh-92.javaโ€Ž

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/**
2+
* ํŠน์ด์‚ฌํ•ญ
3+
* ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ (1)๋ฒˆ ํ’€์ด๋Š” O(N log N) / (2), (3)๋ฒˆ ํ’€์ด๋Š” O(N)์ธ๋ฐ
4+
* ๋ฆฌํŠธ์ฝ”๋“œ์—์„œ Runtime - (1)๋ฒˆ : 3ms, (3)๋ฒˆ : 6ms, (2)๋ฒˆ : 13ms
5+
*
6+
* ์‹œ๊ฐ„๋ณต์žก๋„๋กœ๋งŒ ๋”ฐ์ง€๋ฉด ๋‹น์—ฐํžˆ (2), (3)๋ฒˆ ํ’€์ด๊ฐ€ ๋นจ๋ผ์•ผํ•˜๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์˜คํžˆ๋ ค (1)๋ฒˆ ํ’€์ด๊ฐ€ ๋” ๋น ๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.
7+
* chatgpt ํ™•์ธํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ณ€๊ฒฝํ•ด์„œ ์ •๋ ฌ์„ ํ•˜๋Š”๋ฐ ์ด ๋•Œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค๋Š” ๋‚ด์šฉ์ด ์žˆ์—ˆ๋‹ค.
8+
* N์ด ๋†’์•„์งˆ์ˆ˜๋ก (2), (3)์˜ ์„ฑ๋Šฅ์ด ์ข‹์•„์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋‚˜ ํ•ด๋‹น ๋ฌธ์ œ์˜ ๊ฒฐ๊ณผ์—์„œ๋Š” (1)์˜ ์„ฑ๋Šฅ์ด ์ข‹๊ฒŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.
9+
*/
10+
11+
class Solution {
12+
public boolean isAnagram(String s, String t) {
13+
// (1) ๋ฌธ์ž ๋ฐฐ์—ด - ์ •๋ ฌ & ๋น„๊ต
14+
// ์‹œ๊ฐ„๋ณต์žก๋„ : O(N log N), ๊ณต๊ฐ„๋ณต์žก๋„ : O(N)
15+
16+
// char[] sArr = s.toCharArray();
17+
// char[] tArr = t.toCharArray();
18+
// Arrays.sort(sArr);
19+
// Arrays.sort(tArr);
20+
21+
// return new String(sArr).equals(new String(tArr)); // ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•œ๋‹ค ์ƒ๊ฐํ–ˆ์„ ๋•Œ ๋ฐฉ๋ฒ•
22+
// return Arrays.equals(sArr, tArr); // char ๋ฐฐ์—ด ์ž์ฒด๋ฅผ ๋น„๊ต
23+
24+
// (2) HashMap ์ด์šฉํ•ด ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ ์ฒดํฌ
25+
// ์‹œ๊ฐ„๋ณต์žก๋„ : O(N), ๊ณต๊ฐ„๋ณต์žก๋„ : O(N)
26+
27+
// Map<Character, Integer> count = new HashMap<>();
28+
29+
// for (char x : s.toCharArray()) {
30+
// count.put(x, count.getOrDefault(x, 0) + 1);
31+
// }
32+
33+
// for (char x : t.toCharArray()) {
34+
// count.put(x, count.getOrDefault(x, 0) - 1);
35+
// }
36+
37+
// for (int val : count.values()) {
38+
// if (val != 0) {
39+
// return false;
40+
// }
41+
// }
42+
43+
// return true;
44+
45+
// (3) ๋ฐฐ์—ด๋กœ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ ์ฒดํฌ
46+
// ์‹œ๊ฐ„๋ณต์žก๋„ : O(N), ๊ณต๊ฐ„๋ณต์žก๋„ : O(N)
47+
48+
// if (s.length() != t.length()) {
49+
// return false;
50+
// }
51+
52+
// int[] freq = new int[26];
53+
// for (int i = 0; i < s.length(); i++) {
54+
// freq[s.charAt(i) - 'a']++;
55+
// freq[t.charAt(i) - 'a']--;
56+
// }
57+
58+
// for (int i = 0; i < freq.length; i++) {
59+
// if (freq[i] != 0) {
60+
// return false;
61+
// }
62+
// }
63+
64+
// return true;
65+
}
66+
}

0 commit comments

Comments
ย (0)