Skip to content

Commit f08dc73

Browse files
authored
Merge pull request DaleStudy#326 from jaejeong1/main
2 parents 3c0af16 + bb2f2d3 commit f08dc73

File tree

5 files changed

+142
-0
lines changed

5 files changed

+142
-0
lines changed

โ€Žcontains-duplicate/jaejeong1.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import java.util.Arrays;
2+
import java.util.HashSet;
3+
import java.util.Set;
4+
5+
class SolutionJaeJeong1 {
6+
public boolean containsDuplicate(int[] nums) {
7+
// ํ•ด์‹œ๋งต ์‚ฌ์šฉํ•ด์„œ ๊ฐ™์€ ๊ฐ’์˜ ์นด์šดํŠธ๊ฐ€ 1๋ณด๋‹ค ํฌ๋ฉด true ๋ฐ˜ํ™˜
8+
// ๋๊นŒ์ง€ ๋‹ค ๋Œ๋ฉด false ๋ฐ˜ํ™˜
9+
// ๋˜๋Š” ํ•ด์‹œ์…‹ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋‘ ํ•ด์‹œ์…‹์— ๋„ฃ๊ณ 
10+
// ๊ธธ์ด ๋น„๊ตํ•ด์„œ ๊ฐ™์œผ๋ฉด false, ๋‹ค๋ฅด๋ฉด true ๋ฐ˜ํ™˜
11+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N), ๊ณต๊ฐ„๋ณต์žก๋„: O(N)
12+
13+
Set<Integer> set = Arrays.stream(nums).collect(HashSet::new, Set::add, Set::addAll);
14+
return set.size() != nums.length;
15+
}
16+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
4+
// Definition for a binary tree node.
5+
class TreeNode {
6+
int val;
7+
TreeNode left;
8+
TreeNode right;
9+
TreeNode() {}
10+
TreeNode(int val) { this.val = val; }
11+
TreeNode(int val, TreeNode left, TreeNode right) {
12+
this.val = val;
13+
this.left = left;
14+
this.right = right;
15+
}
16+
}
17+
class SolutionKthSmallest {
18+
public int kthSmallest(TreeNode root, int k) {
19+
// ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ์™€ ์ •์ˆ˜ k๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ํŠธ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ ๊ฐ’ ์ค‘ k๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’(1-์ธ๋ฑ์Šค)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
20+
// ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ํŠน์„ฑ์„ ์ด์šฉํ•ด ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ํ•˜๋ฉด ๋…ธ๋“œ ๊ฐ’์ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.
21+
// ์ •๋ ฌ ํ›„ k๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
22+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N), ๊ณต๊ฐ„๋ณต์žก๋„: O(N)
23+
List<Integer> list = new ArrayList<>();
24+
inorder(root, list);
25+
return list.get(k - 1);
26+
}
27+
28+
private void inorder(TreeNode root, List<Integer> list) {
29+
if (root == null) {
30+
return;
31+
}
32+
inorder(root.left, list);
33+
list.add(root.val);
34+
inorder(root.right, list);
35+
}
36+
}

โ€Žnumber-of-1-bits/jaejeong1.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class SolutionJaejeong1 {
2+
public int hammingWeight(int n) {
3+
// ์ฃผ์–ด์ง„ ์–‘์˜ ์ •์ˆ˜๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , 1๋กœ ์„ค์ •๋œ ์ž๋ฆฟ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
4+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(1), ๊ณต๊ฐ„๋ณต์žก๋„: O(1)
5+
int num = 0;
6+
for (int i=0; i<32; i++) {
7+
if((n & 1) == 1) {
8+
num++;
9+
}
10+
n = n >> 1;
11+
}
12+
return num;
13+
}
14+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
class SolutionPalindromicSubstrings {
2+
// 1๋ฒˆ์จฐ ํ’€์ด: ๊ตฌํ˜„ํ•ด์•ผํ•  ๋กœ์ง์„ ํŒฐ๋ฆฐ๋“œ๋กฌ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ์™€ ๊ฒ€์‚ฌํ•  ๋Œ€์ƒ ๋ฌธ์ž์—ด์„ ๊ตฌํ•˜๋Š” ๋กœ์ง ๋‘˜๋กœ ๋‚˜๋ˆˆ๋‹ค
3+
// ํŒฐ๋ฆฐ๋“œ๋กฌ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ: ํˆฌํฌ์ธํ„ฐ ์‚ฌ์šฉ, lt=0, rt=length-1 ๋กœ ์‹œ์ž‘ํ•ด ๋™๋“ฑ์„ฑ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌ
4+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N), ๊ณต๊ฐ„๋ณต์žก๋„: O(1)
5+
// ๋Œ€์ƒ ๋ฌธ์ž์—ด ๊ตฌํ•˜๊ธฐ: ํˆฌํฌ์ธํ„ฐ ์‚ฌ์šฉ. rt๊ฐ€ length๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์„๋–„๊นŒ์ง€ ๊ณ„์† ์ฆ๊ฐ€์‹œํ‚ค๊ณ ,
6+
// rt๊ฐ€ ๋์— ๋„๋‹ฌํ•˜๋ฉด lt๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , rt๋ฅผ lt+1๋กœ ๋งŒ๋“ ๋‹ค. ๋ชจ๋“  ๊ณผ์ •์—์„œ ํŒฐ๋ฆฐ๋“œ๋กฌ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค
7+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N), ๊ณต๊ฐ„๋ณต์žก๋„: O(1)
8+
// ๊ฒฐ๊ณผ
9+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N^2), ๊ณต๊ฐ„๋ณต์žก๋„: O(1)
10+
11+
public int countSubstrings(String s) {
12+
var subStrings = s.toCharArray();
13+
14+
if (subStrings.length == 0) return 0;
15+
if (subStrings.length == 1) return 1;
16+
17+
var answer = 0;
18+
19+
var lt = 0;
20+
var rt = 1;
21+
while(lt < subStrings.length){
22+
if (isPalindrome(s.substring(lt, rt))) {
23+
answer++;
24+
}
25+
26+
if (rt <= subStrings.length-1){
27+
rt++;
28+
} else {
29+
lt++;
30+
rt = lt+1;
31+
}
32+
}
33+
34+
return answer;
35+
}
36+
37+
private boolean isPalindrome(String s) {
38+
var chars = s.toCharArray();
39+
var lt = 0;
40+
var rt = chars.length - 1;
41+
42+
while(lt < rt) {
43+
if (chars[lt] != chars[rt]) {
44+
return false;
45+
}
46+
lt++;
47+
rt--;
48+
}
49+
50+
return true;
51+
}
52+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
4+
class SolutionTopKFrequentElements {
5+
public int[] topKFrequent(int[] nums, int k) {
6+
// ๋นˆ๋„์ˆœ์œผ๋กœ k๊ฐœ ๋ฐ˜ํ™˜
7+
// ๋นˆ๋„ ์ฒดํฌ: ํ•ด์‹œ๋งต์œผ๋กœ ์นด์šดํŠธ. ์‹œ๊ฐ„๋ณต์žก๋„ O(N), ๊ณต๊ฐ„๋ณต์žก๋„ O(N)
8+
// ๋นˆ๋„์ˆœ ์ •๋ ฌ: sorting, ์‹œ๊ฐ„๋ณต์žก๋„ O(N log N), ๊ณต๊ฐ„๋ณต์žก๋„ O(N)
9+
// ํ•ฉ์‚ฐ: ์‹œ๊ฐ„๋ณต์žก๋„ O(N log N), ๊ณต๊ฐ„๋ณต์žก๋„ O(N)
10+
11+
// ๋นˆ๋„ ์ฒดํฌ
12+
Map<Integer, Integer> freq = new HashMap<>();
13+
for (int num : nums) {
14+
freq.put(num, freq.getOrDefault(num, 0) + 1);
15+
}
16+
17+
// ๋นˆ๋„์ˆœ ์ •๋ ฌ
18+
return freq.keySet().stream()
19+
.sorted((a, b) -> freq.get(b) - freq.get(a))
20+
.mapToInt(i -> i)
21+
.limit(k) // ๋ฐฐ์—ด์—์„œ ์ƒ์œ„ k๊ฐœ๋งŒ ๋ฐ˜ํ™˜
22+
.toArray();
23+
}
24+
}

0 commit comments

Comments
ย (0)