Skip to content

Commit 4a2d9b6

Browse files
authored
Merge pull request #2442 from hyeri0903/main
[hyeri0903] WEEK 03 Solutions
2 parents 1732f9f + c08fb7c commit 4a2d9b6

5 files changed

Lines changed: 157 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public List<List<Integer>> combinationSum(int[] candidates, int target) {
3+
List<List<Integer>> answer = new ArrayList<>();
4+
Arrays.sort(candidates); //๋ถˆํ•„์š”ํ•œ ํƒ์ƒ‰์„ ์ค„์ด๊ธฐ ์œ„ํ•ด sorting
5+
dfs(0, candidates, target, new ArrayList<>(), answer);
6+
return answer;
7+
8+
}
9+
10+
public void dfs(int start, int[] candidates, int target, List<Integer> curList, List<List<Integer>> answer) {
11+
if (target == 0) {
12+
answer.add(new ArrayList<>(curList));
13+
return;
14+
}
15+
for(int i = start; i < candidates.length; i++) {
16+
if (candidates[i] > target) {
17+
break;
18+
}
19+
20+
curList.add(candidates[i]);
21+
dfs(i, candidates, target - candidates[i], curList, answer);
22+
curList.remove(curList.size()-1); //๋‹ค์Œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์œ„ํ•ด backtracking
23+
24+
}
25+
}
26+
}

โ€Ždecode-ways/hyeri0903.javaโ€Ž

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
class Solution {
2+
public int numDecodings(String s) {
3+
/**
4+
1.๋ฌธ์ œ: decode ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜ return
5+
2.์กฐ๊ฑด:
6+
- ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
7+
- decode ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
8+
- ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ return 0
9+
3.ํ’€์ด
10+
- dp (ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ˆ˜๋ฅผ ๋ˆ„์ ํ•ด์„œ ๋”ํ•จ)
11+
e.g 226
12+
0์ž๋ฆฌ : dp[0] = 0
13+
1์ž๋ฆฌ(2) : 2 -> dp]1] = 1
14+
2์ž๋ฆฌ(22): 2(B), 22(v) -> dp[2] = 2
15+
3์ž๋ฆฌ(226): (2, 2, 6), (22, 6), (2, 26) -> dp[3] = 3
16+
17+
time complexity: O(N)
18+
space complexity: O(N)
19+
20+
*/
21+
if (s.charAt(0) == '0') {
22+
return 0;
23+
}
24+
int n = s.length();
25+
int[] dp = new int[n+1];
26+
dp[0] = 1; //์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ์ƒํƒœ
27+
dp[1] = 1;
28+
29+
for(int i = 2; i<=n; i++) {
30+
//1์ž๋ฆฌ์ˆ˜
31+
if (s.charAt(i-1) != '0') {
32+
dp[i] += dp[i-1];
33+
}
34+
//2์ž๋ฆฌ์ˆ˜
35+
if(i > 1) {
36+
int number = Integer.parseInt(s.substring(i-2, i));
37+
//2์ž๋ฆฌ ์ˆ˜๋Š” 10 ~ 26์‚ฌ์ด๋งŒ ๊ฐ€๋Šฅ
38+
if (number >= 10 && number <= 26) {
39+
dp[i] += dp[i-2];
40+
}
41+
}
42+
}
43+
return dp[n];
44+
}
45+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public int maxSubArray(int[] nums) {
3+
/**
4+
1. ๋ฌธ์ œ: ๊ฐ€์žฅ ํฐ ํ•ฉ์„ ๊ฐ€์ง€๋Š” subarray ์˜ sum ์„ ๋ฐ˜ํ™˜
5+
2. ์กฐ๊ฑด: ์›์†Œ๊ฐ’์€ ์Œ์ˆ˜ ~ ์–‘์ˆ˜, ๋ฐฐ์—ด ์ตœ๋Œ€ ๊ธธ์ด = 10^5, ์ตœ์†Œ ๊ธธ์ด = 1
6+
- time complexity: O(N)
7+
- space complexity: O(1)
8+
*/
9+
10+
if (nums.length == 1) {
11+
return nums[0];
12+
}
13+
14+
int maxSum = nums[0]; //์ „์ฒด ์ตœ๋Œ€
15+
int curSum = nums[0]; //ํ˜„์žฌ ํ•ฉ
16+
17+
for(int i = 1; i<nums.length; i++) {
18+
curSum = Math.max(nums[i], curSum + nums[i]);
19+
maxSum = Math.max(maxSum, curSum);
20+
}
21+
return maxSum;
22+
}
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public int hammingWeight(int n) {
3+
/**
4+
1.๋ฌธ์ œ: ์ด์ง„์ˆ˜ ๋ณ€ํ™˜ ํ›„ 1์˜ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜
5+
2. 2๋กœ ๋‚˜๋ˆ„๋ฉด์„œ ๋‚˜๋จธ์ง€๊ฐ€ 1์ผ ๊ฒฝ์šฐ count+=1
6+
*/
7+
int count = 0;
8+
// while(n > 0) {
9+
// if (n % 2 != 0) {
10+
// count += 1;
11+
// }
12+
// n = n / 2;
13+
// }
14+
15+
while(n > 0) {
16+
if ((n & 1) == 1) {
17+
count += 1;
18+
}
19+
n >>= 1;
20+
}
21+
return count;
22+
}
23+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class Solution {
2+
public boolean isPalindrome(String s) {
3+
/**
4+
1. ๋ฌธ์ œ: ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ.
5+
2. ์กฐ๊ฑด: ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜, ๋ฌธ์ž ๋˜๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹Œ๊ฑด ๋ชจ๋‘ ์ œ๊ฑฐ (๊ณต๋ฐฑ, ์‰ผํ‘œ ๋“ฑ))
6+
- left, right index ์ด์ค‘ ํฌ์ธํ„ฐ๋กœ ํ’€์ด
7+
time complexity : O(n)
8+
space complexity : O(1)
9+
*/
10+
boolean answer = true;
11+
//๋ฌธ์ž์—ด ์ถ”๊ฐ€ํ•˜๋ฉด space complexity : O(n)
12+
//s = s.toLowerCase();
13+
//s = s.replaceAll("[^0-9a-z]", "");
14+
int left = 0 ;
15+
int right = s.length() - 1;
16+
17+
while(left < right) {
18+
char l = s.charAt(left);
19+
char r = s.charAt(right);
20+
21+
//์™ผ์ชฝ์ด ์•ŒํŒŒ๋ฒณ or ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฉด skip
22+
if (!Character.isLetterOrDigit(l)) {
23+
left += 1;
24+
continue;
25+
}
26+
//์˜ค๋ฅธ์ชฝ์ด ์•ŒํŒŒ๋ฒณ or ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฉด skip
27+
if (!Character.isLetterOrDigit(r)) {
28+
right -= 1;
29+
continue;
30+
}
31+
if (Character.toLowerCase(l) != Character.toLowerCase(r) ) {
32+
return false;
33+
}
34+
left += 1;
35+
right -= 1;
36+
}
37+
38+
return answer;
39+
}
40+
}

0 commit comments

Comments
ย (0)