diff --git "a/leetcode3/\354\227\274\355\230\234\354\240\225/1034. Coloring A Border.java" "b/leetcode3/\354\227\274\355\230\234\354\240\225/1034. Coloring A Border.java" new file mode 100644 index 00000000..cf3f056f --- /dev/null +++ "b/leetcode3/\354\227\274\355\230\234\354\240\225/1034. Coloring A Border.java" @@ -0,0 +1,46 @@ +// dfs + +class Solution { + + boolean[][] isVisited; + int[] dr = {-1, 1, 0, 0}; + int[] dc = {0, 0, -1, 1}; + + public int[][] colorBorder(int[][] grid, int row, int col, int color) { + isVisited = new boolean[grid.length][grid[0].length]; + + List borders = new ArrayList<>(); + dfs (grid, row, col, grid[row][col], borders); + + for (int[] b : borders) { + grid[b[0]][b[1]] = color; + } + + return grid; + } + + void dfs(int[][] grid, int row, int col, int gridColor, List borders) { + isVisited[row][col] = true; + + boolean isBorder = false; + for (int i = 0; i<4; i++) { + int nr = row + dr[i]; + int nc = col + dc[i]; + + if (nr<0 || nr>=grid.length || nc<0 || nc>=grid[0].length) { // 테두리 + isBorder = true; + continue; + } + + if (grid[nr][nc] != gridColor) { + isBorder = true; + continue; + } + + if (!isVisited[nr][nc]) { + dfs(grid, nr, nc, gridColor, borders); + } + } + if (isBorder) borders.add(new int[]{row, col}); + } +} diff --git "a/leetcode3/\354\227\274\355\230\234\354\240\225/3838. Weighted Word Mapping.java" "b/leetcode3/\354\227\274\355\230\234\354\240\225/3838. Weighted Word Mapping.java" new file mode 100644 index 00000000..2535455a --- /dev/null +++ "b/leetcode3/\354\227\274\355\230\234\354\240\225/3838. Weighted Word Mapping.java" @@ -0,0 +1,17 @@ +// 97 ~ 122 + +class Solution { + public String mapWordWeights(String[] words, int[] weights) { + StringBuilder sb = new StringBuilder(); + for (String word : words) { + int sum = 0; + for (char c : word.toCharArray()) { + int num = (int) c - 97; + sum += weights[num]; + } + int mod = sum % 26; + sb.append((char)('z' - mod)); + } + return sb.toString(); + } +} diff --git "a/leetcode3/\354\227\274\355\230\234\354\240\225/3978. Unique Middle Element.java" "b/leetcode3/\354\227\274\355\230\234\354\240\225/3978. Unique Middle Element.java" new file mode 100644 index 00000000..d15098db --- /dev/null +++ "b/leetcode3/\354\227\274\355\230\234\354\240\225/3978. Unique Middle Element.java" @@ -0,0 +1,11 @@ +class Solution { + public boolean isMiddleElementUnique(int[] nums) { + int middle = (nums.length - 1) / 2; + int cnt = 0; + for (int num : nums) { + if (num == nums[middle]) cnt++; + if (cnt == 2) break; + } + return cnt == 1; + } +}