Skip to content

Commit 2dc307a

Browse files
author
jinvicky
committed
cloneGraph solution
1 parent f7801d6 commit 2dc307a

File tree

5 files changed

+133
-0
lines changed

5 files changed

+133
-0
lines changed

โ€Žclone-graph/jinvicky.javaโ€Ž

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
4+
class Solution {
5+
public Node cloneGraph(Node node) {
6+
if (node == null) return null;
7+
8+
Map<Node, Node> map = new HashMap<>();
9+
return clone(node, map);
10+
}
11+
12+
private Node clone(Node node, Map<Node, Node> map) {
13+
if (map.containsKey(node)) {
14+
return map.get(node);
15+
}
16+
17+
Node clonedNode = new Node(node.val);
18+
map.put(node, clonedNode);
19+
20+
for (Node neighbor : node.neighbors) {
21+
clonedNode.neighbors.add(clone(neighbor, map));
22+
}
23+
24+
return clonedNode;
25+
}
26+
}

โ€Žmaximum-product-subarray/jinvicky.javaโ€Ž

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
class Solution {
2+
// ์ตœ์†Œ๊ฐ’์€ ์Œ์ˆ˜๊ฐ€ ๊ณฑํ•ด์งˆ ๋•Œ ์ตœ๋Œ€๊ฐ’์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์†Œ, ์ตœ๋Œ€๋ฅผ ๊ฐ๊ฐ dp[]๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
23
public int maxProduct(int[] nums) {
34
if (nums.length == 1)
45
return nums[0];
@@ -15,6 +16,11 @@ public int maxProduct(int[] nums) {
1516

1617
for (int i = 1; i < len; i++) {
1718
// ํ›„๋ณด 3์„ ์ค€๋น„
19+
/**
20+
* ํ˜„์žฌ ์ธ๋ฑ์Šค๊ฐ’ (justNum)
21+
* ์ด์ „ ์ธ๋ฑ์Šค ์ตœ์†Œ๊ฐ’ x ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ฐ’ (reverse)
22+
* ์ด์ „ ์ธ๋ฑ์Šค ์ตœ๋Œ€๊ฐ’ x ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ฐ’ (keep)
23+
*/
1824
int justNum = nums[i];
1925
// ๊ณ„์† ๋”ํ•œ ๊ฐ’
2026
int keep = justNum * max[i-1];
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
2+
3+
class Solution {
4+
5+
public int countSubstrings(String s) {
6+
int n = s.length();
7+
int count = 0;
8+
9+
// ํ™€์ˆ˜์™€ ์ง์ˆ˜ ํ†ตํ•ฉ ์ฒ˜๋ฆฌ (0๋ถ€ํ„ฐ 2n-1๊นŒ์ง€)
10+
for (int center = 0; center < 2 * n - 1; center++) {
11+
int left = center / 2;
12+
int right = left + center % 2;
13+
14+
while (left >= 0 && right < n && s.charAt(left) == s.charAt(right)) {
15+
count++;
16+
left--;
17+
right++;
18+
}
19+
}
20+
21+
return count;
22+
}
23+
24+
// ๋” ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ํ’€์ด
25+
26+
/**
27+
* 1. ํšŒ๋ฌธ์˜ ์ค‘์‹ฌ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•œ๋‹ค.
28+
* 2. c๋Š” ํšŒ๋ฌธ์˜ ์ค‘์‹ฌํ›„๋ณด๊ฐ€ ๋œ๋‹ค. 1๊ธ€์ž์งœ๋ฆฌ ์ค‘์‹ฌ์ด๊ฑฐ๋‚˜ ํ˜น์€ ๋‘ ๊ธ€์ž์งœ๋ฆฌ ํšŒ๋ฌธ์˜ ์™ผ์ชฝ ์ค‘์‹ฌ์ด๋‹ค.
29+
* 3. c๋ฅผ ํ™€์ˆ˜ ๊ธธ์ด ํšŒ๋ฌธ์˜ ์ค‘์‹ฌ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค -> expand(s,c,c)
30+
* 4. c๋ถ€ํ„ฐ c+1๊นŒ์ง€ ์ง์ˆ˜ ๊ธธ์ด ํšŒ๋ฌธ์˜ ์™ผ์ชฝ ์ค‘์‹ฌ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค -> expand(s,c,c+1)
31+
*
32+
* ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š” ABA์™€ ABBA ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ๋ชจ๋‘ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.
33+
*/
34+
public int countSubstrings2(String s) {
35+
int n = s.length();
36+
int count = 0;
37+
for (int c = 0; c < n; c++) {
38+
count += expand(s, c, c); // ํ™€์ˆ˜ ๊ธธ์ด ์ค‘์‹ฌ
39+
count += expand(s, c, c + 1); // ์ง์ˆ˜ ๊ธธ์ด ์ค‘์‹ฌ
40+
}
41+
return count;
42+
}
43+
44+
private int expand(String s, int L, int R) {
45+
int add = 0;
46+
while (L >= 0 && R < s.length() && s.charAt(L) == s.charAt(R)) {
47+
add++;
48+
L--;
49+
R++;
50+
}
51+
return add;
52+
}
53+
54+
/**
55+
* ํ”„๋ผ์ด๋น— ๋ฉ”์„œ๋“œ "ํ™•์žฅ" ์„ ์–ธ
56+
* 1. L, R ํฌ์ธํ„ฐ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ›๋Š”๋‹ค.
57+
* 2. ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ๋ฌธ์ž์—ด ๋‚ด ์œ ํšจํ•œ ๋ฒ”์œ„์— ์žˆ์–ด์•ผ ํ•œ๋‹ค.
58+
* 3. L๊ณผ R์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.
59+
* 2์™€ 3์„ ๋ชจ๋‘ ๋งŒ์กฑํ•œ๋‹ค๋ฉด ํšŒ๋ฌธ
60+
*/
61+
62+
}

โ€Žreverse-bits/jinvicky.javaโ€Ž

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
3+
public class Solution {
4+
public int reverseBits(int n) {
5+
int reversed = 0;
6+
7+
for (int i = 0; i < 32; i++) {
8+
reversed <<= 1;
9+
10+
int lsb_of_n = n & 1; // n์ด ํ™€์ˆ˜๋ฉด 1, ์ง์ˆ˜๋ฉด 0์„ ๋ฐ˜ํ™˜
11+
12+
reversed |= lsb_of_n;
13+
14+
n >>= 1;
15+
}
16+
return reversed;
17+
}
18+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public int getSum(int a, int b) {
3+
4+
while (b != 0) {
5+
6+
// ๋ณ€์ˆ˜ 2๊ฐœ์™€ ๋น„ํŠธ ์—ฐ์‚ฐ
7+
// 1.
8+
int sum = a ^ b;
9+
10+
// 2.
11+
int carry = (a & b) << 1;
12+
13+
/// 3.
14+
a = sum;
15+
b = carry; // ํ•œ๋ฒˆํ•˜๊ณ  ๋ง๋ฉด b๋Š” ์“ฐ์ผ ์ผ์ด ์—†๋Š”๋ฐ? -> ๋น ๋œจ๋ฆฐ ๋ฐ˜๋ณต๋ฌธ์ด ์—†๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
16+
17+
}
18+
19+
return a;
20+
}
21+
}

0 commit comments

Comments
ย (0)