diff --git a/leetcode3/3978. Unique Middle Element.py b/leetcode3/3978. Unique Middle Element.py new file mode 100644 index 00000000..6ddab5d7 --- /dev/null +++ b/leetcode3/3978. Unique Middle Element.py @@ -0,0 +1,14 @@ +class Solution: + def isMiddleElementUnique(self, nums: list[int]) -> bool: + ret = 0 + gijun = len(nums)//2 + gijun = nums[gijun] + + for n in nums: + if n == gijun: + ret+=1 + + if ret == 1: + return True + else: + return False diff --git "a/leetcode3/\353\202\250\355\232\250\354\240\225/1034. Coloring A Border.py" "b/leetcode3/\353\202\250\355\232\250\354\240\225/1034. Coloring A Border.py" new file mode 100644 index 00000000..8248c412 --- /dev/null +++ "b/leetcode3/\353\202\250\355\232\250\354\240\225/1034. Coloring A Border.py" @@ -0,0 +1,42 @@ +# 풀이 실패 + +class Solution: + def colorBorder(self, grid: List[List[int]], row: int, col: int, color: int) -> List[List[int]]: + m, n = len(grid), len(grid[0]) + target_color = grid[row][col] + + queue = deque([(row, col)]) + visited = {(row, col)} + borders = [] + + while queue: + r, c = queue.popleft() + is_border = False + + # 상하좌우 4방향으로 + for dr, dc in [(-1, 0), (1, 0), (0, -1), (0, 1)]: + nr, nc = r + dr, c + dc + + # 격자 밖이면 테두리임 + if not (0 <= nr < m and 0 <= nc < n): + is_border = True + + # 다른 색상이어도 테두리 + elif grid[nr][nc] != target_color: + is_border = True + + # 아직 안 가본 색상 칸이라면 큐에 추가함 + elif (nr, nc) not in visited: + visited.add((nr, nc)) + queue.append((nr, nc)) + + # 테두리로 결정되면 기록 + if is_border: + borders.append((r, c)) + + # 테두리 칸들만 색상 변경 + for r, c in borders: + grid[r][c] = color + + return grid + \ No newline at end of file diff --git "a/leetcode3/\353\202\250\355\232\250\354\240\225/3838. Weighted Word Mapping.py" "b/leetcode3/\353\202\250\355\232\250\354\240\225/3838. Weighted Word Mapping.py" new file mode 100644 index 00000000..d75ce32b --- /dev/null +++ "b/leetcode3/\353\202\250\355\232\250\354\240\225/3838. Weighted Word Mapping.py" @@ -0,0 +1,12 @@ +class Solution: + def mapWordWeights(self, words: List[str], weights: List[int]) -> str: + ans = [] + + # ord()의 합과 알파벳 거꾸로 정렬한 순서의 합이 항상 122인 것을 이용 + for word in words: + sum_score = 0 + for char in word: + sum_score += weights[ord(char)-97] + ans.append(chr(122 - sum_score % 26)) + + return ''.join(ans) \ No newline at end of file diff --git "a/leetcode3/\353\202\250\355\232\250\354\240\225/3978. Unique Middle Element.py" "b/leetcode3/\353\202\250\355\232\250\354\240\225/3978. Unique Middle Element.py" new file mode 100644 index 00000000..826b65c2 --- /dev/null +++ "b/leetcode3/\353\202\250\355\232\250\354\240\225/3978. Unique Middle Element.py" @@ -0,0 +1,4 @@ +# 문제 그대로 풀이하면 됨 +class Solution: + def isMiddleElementUnique(self, nums: list[int]) -> bool: + return nums.count(nums[len(nums) // 2]) == 1 \ No newline at end of file diff --git "a/leetcode3/\353\263\200\354\247\200\355\230\221/v2/3978. Unique Middle Element.py" "b/leetcode3/\353\263\200\354\247\200\355\230\221/v2/3978. Unique Middle Element.py" new file mode 100644 index 00000000..e356a48c --- /dev/null +++ "b/leetcode3/\353\263\200\354\247\200\355\230\221/v2/3978. Unique Middle Element.py" @@ -0,0 +1,16 @@ + +''' +1. 아이디어 : +middle 원소 구하고, 그 원소가 유일한지 확인한다. + +2. 시간복잡도 : + o(n) +3. 자료구조/알고리즘 : +''' + + +class Solution: + def isMiddleElementUnique(self, nums: list[int]) -> bool: + n = len(nums) + middle = nums[n//2] + return True if 1 == len([i for i in nums if i == middle]) else False \ No newline at end of file diff --git "a/leetcode3/\354\235\264\354\247\204\355\235\254/3978. Unique Middle Element.java" "b/leetcode3/\354\235\264\354\247\204\355\235\254/3978. Unique Middle Element.java" new file mode 100644 index 00000000..e67f8a89 --- /dev/null +++ "b/leetcode3/\354\235\264\354\247\204\355\235\254/3978. Unique Middle Element.java" @@ -0,0 +1,11 @@ +class Solution { + public boolean isMiddleElementUnique(int[] nums) { + int target = nums[nums.length/2]; + for(int i=0; i bool: + i = len(nums) // 2 + a = nums[i] + nums.remove(a) + + if a in nums: + return False + return True \ No newline at end of file diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/3978. Unique Middle Element.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/3978. Unique Middle Element.py" new file mode 100644 index 00000000..434e8a65 --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/3978. Unique Middle Element.py" @@ -0,0 +1,4 @@ +from collections import defaultdict +class Solution: + def isMiddleElementUnique(self, nums: list[int]) -> bool: + return Counter(nums)[nums[len(nums)//2]] == 1 diff --git "a/leetcode3/\355\231\251\354\235\200\354\247\200/3978. Unique Middle Element.js" "b/leetcode3/\355\231\251\354\235\200\354\247\200/3978. Unique Middle Element.js" new file mode 100644 index 00000000..5325fa5f --- /dev/null +++ "b/leetcode3/\355\231\251\354\235\200\354\247\200/3978. Unique Middle Element.js" @@ -0,0 +1,14 @@ +/** + * @param {number[]} nums + * @return {boolean} + */ +var isMiddleElementUnique = function(nums) { + const middleIndex=Math.floor(nums.length/2); + const middleNum=nums[middleIndex]; + + for(let i=0;i