Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions coin-change/kimjunyoung90.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import java.util.Arrays;

class Solution {
//풀이 원리 = 특정 금액을 만들 때 최소 동전 수는 몇 개?
//예) 0원은 동전 0개
// 1원은 동전 1개
// 2원은 동전 1
public int coinChange(int[] coins, int amount) {
//불가능한 값
int max = amount + 1;
int[] dp = new int[amount + 1];
//최소 동전 수를 모두 불가능한 값으로 설정
Arrays.fill(dp, max);
dp[0] = 0;

//금액 1원 부터 계산
for (int i = 1; i <= amount; i++) {
//사용할 수 있는 동전을 꺼냄
for(int coin: coins) {
if (coin <= i) {
dp[i] = Math.min(dp[i], dp[i - coin] + 1);
}
}
}

return dp[amount] > amount ? -1 : dp[amount];
}
}
18 changes: 18 additions & 0 deletions find-minimum-in-rotated-sorted-array/kimjunyoung90.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// 요구사항 : 이진 탐색 이용
class Solution {
public int findMin(int[] nums) {
int left = 0;
int right = nums.length - 1;
while(left < right) {
int mid = (left + right) / 2;
//중앙 값이 오른쪽 값보다 크다. = 최소값이 오른쪽 구간에 있음
if(nums[mid] > nums[right]) {
left = mid + 1;
} else {
right = mid;
}
}

return nums[left];
}
}
42 changes: 42 additions & 0 deletions word-search/kimjunyoung90.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
class Solution {
public boolean exist(char[][] board, String word) {

int rows = board.length;
int columns = board[0].length;
boolean[][] visited = new boolean[rows][columns];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (dfs(board, word, i, j, 0, visited)) {
return true;
}
}
}
return false;
}

private boolean dfs(char[][] board, String word, int row, int col, int idx, boolean[][] visited) {
//예외 처리 1
if (idx == word.length()) return true;

//예외 처리 2
if (row < 0 || col < 0 || row >= board.length || col >= board[0].length) return false;

//예외 처리 3
if (visited[row][col]) return false;

//1. 글자 체크
if (board[row][col] != word.charAt(idx)) return false;

//방문 처리
visited[row][col] = true;

//상, 하, 좌, 우 찾기
boolean found = dfs(board, word, row + 1, col, idx + 1, visited)
|| dfs(board, word, row - 1, col, idx + 1, visited)
|| dfs(board, word, row, col + 1, idx + 1, visited)
|| dfs(board, word, row, col - 1, idx + 1, visited);

visited[row][col] = false;
return found;
}
}