Skip to content

Commit

Permalink
Merge pull request #326 from jaejeong1/main
Browse files Browse the repository at this point in the history
  • Loading branch information
jaejeong1 authored Aug 18, 2024
2 parents 3c0af16 + bb2f2d3 commit f08dc73
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 0 deletions.
16 changes: 16 additions & 0 deletions contains-duplicate/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

class SolutionJaeJeong1 {
public boolean containsDuplicate(int[] nums) {
// ํ•ด์‹œ๋งต ์‚ฌ์šฉํ•ด์„œ ๊ฐ™์€ ๊ฐ’์˜ ์นด์šดํŠธ๊ฐ€ 1๋ณด๋‹ค ํฌ๋ฉด true ๋ฐ˜ํ™˜
// ๋๊นŒ์ง€ ๋‹ค ๋Œ๋ฉด false ๋ฐ˜ํ™˜
// ๋˜๋Š” ํ•ด์‹œ์…‹ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋‘ ํ•ด์‹œ์…‹์— ๋„ฃ๊ณ 
// ๊ธธ์ด ๋น„๊ตํ•ด์„œ ๊ฐ™์œผ๋ฉด false, ๋‹ค๋ฅด๋ฉด true ๋ฐ˜ํ™˜
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N), ๊ณต๊ฐ„๋ณต์žก๋„: O(N)

Set<Integer> set = Arrays.stream(nums).collect(HashSet::new, Set::add, Set::addAll);
return set.size() != nums.length;
}
}
36 changes: 36 additions & 0 deletions kth-smallest-element-in-a-bst/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import java.util.ArrayList;
import java.util.List;

// Definition for a binary tree node.
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
class SolutionKthSmallest {
public int kthSmallest(TreeNode root, int k) {
// ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ์™€ ์ •์ˆ˜ k๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ํŠธ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ ๊ฐ’ ์ค‘ k๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’(1-์ธ๋ฑ์Šค)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
// ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ํŠน์„ฑ์„ ์ด์šฉํ•ด ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ํ•˜๋ฉด ๋…ธ๋“œ ๊ฐ’์ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.
// ์ •๋ ฌ ํ›„ k๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N), ๊ณต๊ฐ„๋ณต์žก๋„: O(N)
List<Integer> list = new ArrayList<>();
inorder(root, list);
return list.get(k - 1);
}

private void inorder(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
inorder(root.left, list);
list.add(root.val);
inorder(root.right, list);
}
}
14 changes: 14 additions & 0 deletions number-of-1-bits/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class SolutionJaejeong1 {
public int hammingWeight(int n) {
// ์ฃผ์–ด์ง„ ์–‘์˜ ์ •์ˆ˜๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , 1๋กœ ์„ค์ •๋œ ์ž๋ฆฟ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
// ์‹œ๊ฐ„๋ณต์žก๋„: O(1), ๊ณต๊ฐ„๋ณต์žก๋„: O(1)
int num = 0;
for (int i=0; i<32; i++) {
if((n & 1) == 1) {
num++;
}
n = n >> 1;
}
return num;
}
}
52 changes: 52 additions & 0 deletions palindromic-substrings/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
class SolutionPalindromicSubstrings {
// 1๋ฒˆ์จฐ ํ’€์ด: ๊ตฌํ˜„ํ•ด์•ผํ•  ๋กœ์ง์„ ํŒฐ๋ฆฐ๋“œ๋กฌ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ์™€ ๊ฒ€์‚ฌํ•  ๋Œ€์ƒ ๋ฌธ์ž์—ด์„ ๊ตฌํ•˜๋Š” ๋กœ์ง ๋‘˜๋กœ ๋‚˜๋ˆˆ๋‹ค
// ํŒฐ๋ฆฐ๋“œ๋กฌ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ: ํˆฌํฌ์ธํ„ฐ ์‚ฌ์šฉ, lt=0, rt=length-1 ๋กœ ์‹œ์ž‘ํ•ด ๋™๋“ฑ์„ฑ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌ
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N), ๊ณต๊ฐ„๋ณต์žก๋„: O(1)
// ๋Œ€์ƒ ๋ฌธ์ž์—ด ๊ตฌํ•˜๊ธฐ: ํˆฌํฌ์ธํ„ฐ ์‚ฌ์šฉ. rt๊ฐ€ length๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์„๋–„๊นŒ์ง€ ๊ณ„์† ์ฆ๊ฐ€์‹œํ‚ค๊ณ ,
// rt๊ฐ€ ๋์— ๋„๋‹ฌํ•˜๋ฉด lt๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , rt๋ฅผ lt+1๋กœ ๋งŒ๋“ ๋‹ค. ๋ชจ๋“  ๊ณผ์ •์—์„œ ํŒฐ๋ฆฐ๋“œ๋กฌ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N), ๊ณต๊ฐ„๋ณต์žก๋„: O(1)
// ๊ฒฐ๊ณผ
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N^2), ๊ณต๊ฐ„๋ณต์žก๋„: O(1)

public int countSubstrings(String s) {
var subStrings = s.toCharArray();

if (subStrings.length == 0) return 0;
if (subStrings.length == 1) return 1;

var answer = 0;

var lt = 0;
var rt = 1;
while(lt < subStrings.length){
if (isPalindrome(s.substring(lt, rt))) {
answer++;
}

if (rt <= subStrings.length-1){
rt++;
} else {
lt++;
rt = lt+1;
}
}

return answer;
}

private boolean isPalindrome(String s) {
var chars = s.toCharArray();
var lt = 0;
var rt = chars.length - 1;

while(lt < rt) {
if (chars[lt] != chars[rt]) {
return false;
}
lt++;
rt--;
}

return true;
}
}
24 changes: 24 additions & 0 deletions top-k-frequent-elements/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import java.util.HashMap;
import java.util.Map;

class SolutionTopKFrequentElements {
public int[] topKFrequent(int[] nums, int k) {
// ๋นˆ๋„์ˆœ์œผ๋กœ k๊ฐœ ๋ฐ˜ํ™˜
// ๋นˆ๋„ ์ฒดํฌ: ํ•ด์‹œ๋งต์œผ๋กœ ์นด์šดํŠธ. ์‹œ๊ฐ„๋ณต์žก๋„ O(N), ๊ณต๊ฐ„๋ณต์žก๋„ O(N)
// ๋นˆ๋„์ˆœ ์ •๋ ฌ: sorting, ์‹œ๊ฐ„๋ณต์žก๋„ O(N log N), ๊ณต๊ฐ„๋ณต์žก๋„ O(N)
// ํ•ฉ์‚ฐ: ์‹œ๊ฐ„๋ณต์žก๋„ O(N log N), ๊ณต๊ฐ„๋ณต์žก๋„ O(N)

// ๋นˆ๋„ ์ฒดํฌ
Map<Integer, Integer> freq = new HashMap<>();
for (int num : nums) {
freq.put(num, freq.getOrDefault(num, 0) + 1);
}

// ๋นˆ๋„์ˆœ ์ •๋ ฌ
return freq.keySet().stream()
.sorted((a, b) -> freq.get(b) - freq.get(a))
.mapToInt(i -> i)
.limit(k) // ๋ฐฐ์—ด์—์„œ ์ƒ์œ„ k๊ฐœ๋งŒ ๋ฐ˜ํ™˜
.toArray();
}
}

0 comments on commit f08dc73

Please sign in to comment.