본문 바로가기

컴퓨터

릿코드 876 - Middle of the Linked List class Solution: def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]: ans = 0 cur = head while cur : ans += 1 cur = cur.next ans = math.ceil(ans/2) if ans % 2 else ans/2 + 1 cur = head for i in range(int(ans)-1) : cur = cur.next return cur 3n/2 번의 연산에 결과를 내는 코드. class Solution: def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]: ans = 0 node = [] cur = head whil.. 더보기
릿코드200 - 섬의 수 class Solution: def numIslands(self, grid: List[List[str]]) -> int: ans = 0 m = len(grid) n = len(grid[0]) for i in range(m) : for j in range(n) : if grid[i][j] == "1" : ans += 1 self.check(grid, i, j) return ans def check(self, grid, i, j) : dir = [ [1, 0], [0, 1], [-1, 0], [0, -1] ] stack = [[i,j]] while stack : i, j = stack.pop() grid[i][j] = 0 for direction in dir : X, Y = direction nextX, n.. 더보기
릿코드62 - Unique paths [dp] class Solution: def uniquePaths(self, m: int, n: int) -> int: arr = [[0 for _ in range(n)] for _ in range(m)] for i in range(n) : arr[0][i] = 1 for i in range(m): arr[i][0] = 1 for i in range(1, m) : for j in range(1, n) : arr[i][j] = arr[i-1][j] + arr[i][j-1] return arr[m-1][n-1] 릿코드..... 실행할 때마다 시간이 미묘하게 변하는거 같다.. 지금까지 시간 줄이려고 로직 수정하고 했던건 다 우연히 줄었었나보다.. ㅋㅋㅋㅋㅋㅋ 더보기
릿코드155 - min Stack [스택] class MinStack: def __init__(self): self.stack = [] self.minStack = [] self.min = 2**31 def push(self, val: int) -> None: self.stack.append(val) self.min = self.min if val > self.min else val self.minStack.append(self.min) def pop(self) -> None: num = self.minStack.pop() self.stack.pop() if not self.minStack : self.min = 2**31 if num == self.min : self.min = min(self.minStack) def top(self) -> i.. 더보기
릿코드 2 - 두 수 더하기 (리스트) class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode head = new ListNode(); ListNode cursor = head; int up = 0; int num1, num2; while(l1 != null || l2 != null) { if(l1 == null) num1 = 0; else { num1 = l1.val; l1 = l1.next; } if(l2 == null) num2 = 0; else { num2 = l2.val; l2 = l2.next; } int tmp = num1 + num2 + up; up = tmp / 10; cursor.val = tmp % 10; if(l1 == null.. 더보기
릿코드 20 - 괄호 짝 맞추기 class Solution(object): def isValid(self, s): bracket = { '(' : 1, ')' : -1, '{' : 2, '}' : -2, '[' : 3, ']' : -3} mystack = [] for i in s : if bracket[i] > 0 : mystack.append(bracket[i]) else : if not mystack : return False if int(mystack[-1]) + bracket[i] == 0 : mystack.pop() else : return False return len(mystack) == 0 class Solution(object): def isValid(self, s): openBracket = { '[' : ']', '.. 더보기
릿코드 104 - 트리의 가장 깊은 층 # 재귀 버전 class Solution(object): def pre(self, node, count, depth): count += 1 if node.right: self.pre(node.right, count, depth) if node.left: self.pre(node.left, count, depth) if count > depth[0]: depth[0] = count def maxDepth(self, root): depth = [0] if root: self.pre(root, 0, depth) return depth[0] # iter 버전 class Solution(object): def maxDepth(self, root): stack = [(1, root)] maxDepth = 0 whi.. 더보기
백준 1068 - 트리 문제 node = int(input()) parent = [int(x) for x in input().split(' ')] deleted = int(input()) class Node : def __init__(self, data): self.data = data self.child = [] class Tree : def __init__(self, node): self.root = node self.leaf = 0 def preorder(self, node): for i in node.child : if i.data == deleted: continue self.preorder(i) if not node.child or (len(node.child) == 1 and node.child[0].data == de.. 더보기
한글 입력 안될때, gksrmf dlqfur dksehla 한글 입력이 안될 때 해결 방법 입니다. 작업 표시줄에 "한" 이라고 되어있는 부분을 확인해보세요 저 부분이 ENG 이라고 되어있으면 클릭해서 한국어로 바꿔주시면 됩니다. 윈도우 로고 + R 키 입력후 ctfmon.exe를 실행해주시면 됩니다. 이외에도 네이버 검색창에 한/영 변환 눌러가면서 입력해보기, 재부팅 이 있습니다. 재부팅은 최후의 수단으로.. 더보기
티스토리 코드블럭 적용 안됨, 이쁘게 넣어보기 티스토리에 코드 블럭을 추가할 수 있는 기능이 있다. 글 작성시 상단에 ... 아이콘을 누르면 확인할 수 있다. 언어까지 선택해서 코드를 넣어주면 이렇게 이쁘게 보이는데 글 작성을 마치고 확인해보면 하나도 적용이 안되어있다.. 이는 플러그인이 적용되지 않아서 그런 거다. 뭐 직접 코딩할 수도 있겠지만 번거로우니 플러그인으로 하는게 빠르고 편하다. 플러그인을 적용하는 방법은 다음과 같다. 스크롤을 좀 내리다 보면 코드 문법 강조가 있다. 해당 플러그인을 적용해주면 ( 해당 글에서는 테마를 '기본'으로 적용했음) 성공!! 이라고 하기엔 코드가 다닥다닥 너무 못생겼다. 줄간격이라도 벌려서 이쁘게 만들자 글 수정하기를 누르고 수정 시 기본 모드에서 HTML모드로 들어간다. 내 코드는 pre 태그안에 code 태.. 더보기