Skip to content

Commit 0748714

Browse files
authored
Merge pull request DaleStudy#317 from taekwon-dev/main
[์œคํƒœ๊ถŒ] Week1 ๋ฌธ์ œ ํ’€์ด
2 parents df078a5 + ca2017a commit 0748714

File tree

4 files changed

+139
-0
lines changed

4 files changed

+139
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
/**
3+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(N)
4+
* - ์ตœ์•…์˜ ๊ฒฝ์šฐ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๊นŒ์ง€ ์ฒดํฌํ•ด์•ผ ํ•จ.
5+
* - ์ค‘๋ณต ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด Set ์„ ํƒํ•œ ์ด์œ 
6+
* - O(1) ์œผ๋กœ ํƒ์ƒ‰ ๊ฐ€๋Šฅ
7+
* - ๋ฐ์ดํ„ฐ ์ˆœ์„œ ๋ณด์žฅ ํ•„์š” ์—†์Œ
8+
*
9+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(N)
10+
* - ์ตœ์•…์˜ ๊ฒฝ์šฐ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์›์†Œ๊ฐ€ ์ž๋ฃŒ๊ตฌ์กฐ์— ์ €์žฅ๋˜๋ฏ€๋กœ O(N)
11+
*/
12+
public boolean containsDuplicate(int[] nums) {
13+
Set<Integer> set = new HashSet<>();
14+
for (int num: nums) {
15+
if (set.contains(num)) {
16+
return true;
17+
}
18+
set.add(num);
19+
}
20+
return false;
21+
}
22+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/**
2+
* ์‚ฌ๊ณ ์˜ ํ๋ฆ„:
3+
* - Binary Search Tree & ์ˆœ์„œ?
4+
* - In-order ๋ฐฉ์‹์œผ๋กœ ์ˆœํšŒ๋ฅผ ํ•ด์•ผ๊ฒ ๋‹ค.
5+
* - 1-indexed ์ด๋ฏ€๋กœ ๋ฆฌ์ŠคํŠธ์— ์˜ฎ๊ธฐ๊ณ  k๋ฒˆ์งธ ์ ‘๊ทผํ•œ๋‹ค๋ฉด -1 ํ•ด์„œ ์ ‘๊ทผํ•ด์•ผ๊ฒ ๋‹ค.
6+
* - ๊ทผ๋ฐ, In-order ์ˆœํšŒ ์–ด๋–ป๊ฒŒ ํ•˜๋”๋ผ? ใ…‹ใ…‹ (์žฌ๊ท€๋กœ ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ..) >> ์—ฌ๊ธฐ์„œ ๊ฒ€์ƒ‰ (...)
7+
*
8+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(N)
9+
* - BST ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋‹ค ์ˆœํšŒํ•ด์•ผ ํ•จ
10+
*
11+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(N)
12+
* - ๋‚ด๊ฐ€ ํ™œ์šฉํ•œ ์Šคํƒ์„ ๊ธฐ์ค€์œผ๋กœ ๋ณด๋ฉด,
13+
* - Stack ์— ์ตœ๋Œ€๋กœ ๋งŽ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋Š” BST ๋†’์ด
14+
* - BST ๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ ํ•œ ์ชฝ์œผ๋กœ ์™„์ „ํžˆ ํŽธํ–ฅ๋˜์–ด ๋†’์ด๊ฐ€ N์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ ,
15+
* - ๊ท ํ˜•์ด ์ž˜ ๋งž๋‹ค๋ฉด (๋งˆ์น˜ AVL, Red-Black) log N์ด ๋  ์ˆ˜ ์žˆ์Œ
16+
* - ๋”ฐ๋ผ์„œ O(N) ์ด์ง€๋งŒ, ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์ด ์ž˜ ๋งž๋‹ค๋ฉด O(log N)
17+
*/
18+
19+
/**
20+
* Definition for a binary tree node.
21+
* public class TreeNode {
22+
* int val;
23+
* TreeNode left;
24+
* TreeNode right;
25+
* TreeNode() {}
26+
* TreeNode(int val) { this.val = val; }
27+
* TreeNode(int val, TreeNode left, TreeNode right) {
28+
* this.val = val;
29+
* this.left = left;
30+
* this.right = right;
31+
* }
32+
* }
33+
*/
34+
class Solution {
35+
public int kthSmallest(TreeNode root, int k) {
36+
Stack<TreeNode> stack = new Stack<>();
37+
TreeNode current = root;
38+
int count = 0;
39+
40+
while (current != null || !stack.isEmpty()) {
41+
while (current != null) {
42+
stack.push(current);
43+
current = current.left;
44+
}
45+
46+
current = stack.pop();
47+
count++;
48+
49+
if (count == k) {
50+
return current.val;
51+
}
52+
53+
current = current.right;
54+
}
55+
56+
return -1;
57+
}
58+
}

โ€Žnumber-of-1-bits/taekwon-dev.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
/**
3+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(log N)
4+
* - ์ฃผ์–ด์ง„ ์ˆ˜๋ฅผ 2๋กœ ๋‚˜๋ˆ„๋Š” ํ–‰์œ„๋ฅผ ๋ฐ˜๋ณต (์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€)
5+
* - ์ด๋Š” ๋ฐ˜๋Œ€๋กœ ๋ณด๋ฉด 2๋ฅผ ๋ช‡ ๋ฒˆ ๊ณฑํ•ด์•ผ N์ด ๋‚˜์˜ค๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ณผ์ •๊ณผ ๊ฐ™์Œ (๋กœ๊ทธ์˜ ์˜๋ฏธ..ใ…Ž)
6+
* - ๋˜ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ๊นŒ Binary Search Tree ์—์„œ ํŠน์ • ๊ฐ’์„ ์กฐํšŒํ•  ๋•Œ์™€ ๊ฐ™์€ ํ๋ฆ„์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Œ!
7+
*
8+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
9+
* - ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š์Œ
10+
*/
11+
public int hammingWeight(int n) {
12+
int result = 0;
13+
while (n >= 1) {
14+
if ((n % 2) == 1) {
15+
result++;
16+
}
17+
n /= 2;
18+
}
19+
20+
return result;
21+
}
22+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Solution {
2+
/**
3+
* ์‚ฌ๊ณ ์˜ ํ๋ฆ„:
4+
* - Map ์ด์šฉํ•ด์„œ ๊ฐ ํ‚ค ๊ฐ’ ๋ณ„๋กœ ๋ช‡ ๊ฐœ๊ฐ€ ์žˆ๋Š”์ง€ ์ €์žฅํ•˜์ž.
5+
* - ์ผ๋‹จ ์ฃผ์–ด์ง„ ๋ชจ๋“  ๋ฐฐ์—ด์„ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.
6+
* - ์ •๋ ฌ์ด ํ•„์š”ํ•˜๊ฒ ๋‹ค.
7+
* - Map์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์„ ํ•˜๋Š”๋ฐ, ํ‚ค ๊ฐ’๋„ ๊ฐ™์ด ๋”ฐ๋ผ์™€์•ผ๊ฒ ๋„ค?
8+
* - Comparable? Comparator? (ํ•˜ ... ์ด๊ฑฐ ์–ด๋–ป๊ฒŒ ํ–ˆ๋”๋ผ..)
9+
*
10+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(NlogN)
11+
* - ArrayList sort() ๋Š” Merge Sort
12+
* - Merge Sort ๋Š” O(NlogN)
13+
*
14+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(N)
15+
* - ์ตœ์•…์˜ ๊ฒฝ์šฐ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์›์†Œ๊ฐ€ ์ž๋ฃŒ๊ตฌ์กฐ์— ์ €์žฅ๋˜๋ฏ€๋กœ O(N)
16+
*/
17+
public int[] topKFrequent(int[] nums, int k) {
18+
Map<Integer, Integer> map = new HashMap<>();
19+
for (int num: nums) {
20+
map.put(num, map.getOrDefault(num, 0) + 1);
21+
}
22+
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet());
23+
list.sort(new Comparator<Map.Entry<Integer, Integer>>() {
24+
@Override
25+
public int compare(Map.Entry<Integer, Integer> e1, Map.Entry<Integer, Integer> e2) {
26+
return e2.getValue().compareTo(e1.getValue());
27+
}
28+
});
29+
30+
int[] result = new int[k];
31+
for (int i = 0; i < k; i++) {
32+
result[i] = list.get(i).getKey();
33+
}
34+
35+
return result;
36+
}
37+
}

0 commit comments

Comments
ย (0)