Skip to content

Commit fc5fecc

Browse files
authored
Merge pull request #1373 from sora0319/main
[sora0319] Week 04 Solutions
2 parents 89cbb19 + 0671d92 commit fc5fecc

File tree

5 files changed

+134
-0
lines changed

5 files changed

+134
-0
lines changed

coin-change/sora0319.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import java.util.Arrays;
2+
3+
class Solution {
4+
public int coinChange(int[] coins, int amount) {
5+
int[] dp = new int[amount + 1];
6+
Arrays.fill(dp, amount + 1); // 최대값으로 초기화 (amount + 1은 절대 나올 수 없는 큰 값)
7+
dp[0] = 0; // 0원을 만들 때는 동전 0개
8+
9+
for (int i = 1; i <= amount; i++) {
10+
for (int coin : coins) {
11+
if (i - coin >= 0) {
12+
dp[i] = Math.min(dp[i], dp[i - coin] + 1);
13+
}
14+
}
15+
}
16+
17+
return dp[amount] > amount ? -1 : dp[amount];
18+
}
19+
}
20+
21+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public int findMin(int[] nums) {
3+
int start = 0;
4+
int end = nums.length-1;
5+
6+
7+
while(start < end){
8+
int mid = (start + end) / 2;
9+
10+
if(nums[mid] < nums[end]){
11+
end = mid;
12+
}
13+
else{
14+
start = mid + 1;
15+
}
16+
}
17+
18+
return nums[start];
19+
}
20+
}
21+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution {
2+
public int maxDepth(TreeNode root) {
3+
if(root == null){
4+
return 0;
5+
}
6+
7+
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
8+
}
9+
}
10+

merge-two-sorted-lists/sora0319.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* public class ListNode {
4+
* int val;
5+
* ListNode next;
6+
* ListNode() {}
7+
* ListNode(int val) { this.val = val; }
8+
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
9+
* }
10+
*/
11+
class Solution {
12+
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
13+
ListNode answer = new ListNode(0, null);
14+
ListNode merged = answer;
15+
16+
while(list1 != null || list2 != null){
17+
if(list1 == null){
18+
merged.next = list2;
19+
break;
20+
}
21+
if(list2 == null){
22+
merged.next = list1;
23+
break;
24+
}
25+
if(list1.val <= list2.val){
26+
merged.next = list1;
27+
list1 = list1.next;
28+
}
29+
else{
30+
merged.next = list2;
31+
list2 = list2.next;
32+
}
33+
34+
merged = merged.next;
35+
}
36+
37+
return answer.next;
38+
}
39+
}
40+

word-search/sora0319.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution {
2+
public boolean exist(char[][] board, String word) {
3+
boolean[][] visited = new boolean[board.length][board[0].length];
4+
boolean status = false;
5+
6+
for(int i = 0; i < board.length; i++){
7+
for(int j = 0; j < board[0].length; j++){
8+
if(word.charAt(0) == board[i][j]){
9+
visited[i][j] = true;
10+
status = checkingWord(board, word, visited, 1, i, j);
11+
visited[i][j] = false;
12+
}
13+
if(status) return true;
14+
}
15+
}
16+
17+
return false;
18+
}
19+
public boolean checkingWord(char[][] board, String word, boolean[][] visited, int same, int x, int y){
20+
if(same == word.length()) return true;
21+
int[] mx = {-1,1,0,0};
22+
int[] my = {0,0,-1,1};
23+
24+
for(int k = 0; k < 4; k++){
25+
int nx = mx[k] + x;
26+
int ny = my[k] + y;
27+
28+
if(nx < 0 || ny < 0 || nx >= board.length || ny >= board[0].length) continue;
29+
if(visited[nx][ny]) continue;
30+
31+
boolean status = false;
32+
33+
if(word.charAt(same) == board[nx][ny]){
34+
visited[nx][ny] = true;
35+
if(checkingWord(board, word, visited, same + 1, nx, ny)) return true;
36+
visited[nx][ny] = false;
37+
}
38+
}
39+
return false;
40+
}
41+
}
42+

0 commit comments

Comments
 (0)