본문 바로가기

리트코드14

Leetcode: 13. Roman to Integer - Python 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 문제: Roman to Integer 등급: Easy 내용: 로마 숫자를 일반 숫자로 바꾼다. class Solution(object): def romanToInt(self, s): answer = 0 i = 0 s = s[::-1] while i < len(s): if s[i] == 'I': answer += 1 i += 1 continue if s[i] == 'V': answer +=5 i += 1 if i < len(s) and s[i] == 'I': answer -= 1 i += 1 continue.. 2022. 2. 8.
Leetcode Climbing Stairs Python 풀이 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 문제: Climbing Stairs 등급: Easy 내용: n의 계단을 1개 또는 2개씩 올라가는데의, 총 몇 가지 독특한 방법으로 n 계단을 올라갈 수 있는가? class Solution(object): def climbStairs(self, n): cache = {} def climbStairs_2(n): if n in cache: return cache[n] if n 2022. 2. 5.
Leetcode Fibonacci Number 파이썬 풀이 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 문제: Fibonacci Number 등급: Easy 내용: 피보나치 수. 피보나치 수의 개념은 간단하다. 각 숫자들은 앞의 두 숫자의 합이다. 그래서, 011235.... 이렇게 되는 숫자들이다. 간단하게, 그렇다면 f(n) = f(n-1) + f(n-2)를 적으면 되는 것이다. class Solution(object): def fib(self, n): if n< 2: return n return self.fib(n-1)+self.fib(n-2) 그렇다면 이런 코드가 나오게 되어있다. 하지만, 이 코드의.. 2022. 2. 2.
Leetcode Pascal's Triangle II 파이썬 풀이 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 문제: Pascal's Triangle II 등급: Easy 알아낸 점으로는, 구하고자 하는 row의 전 row가 모두 쓰인다는 점이다. 그 전 row의 (i-1, j-1)이 사용된다. 이 점을 활용할수 있지 않을까? 어떻게든 재귀 호출의 방식을 사용하고 싶었다. 어떻게 list를 더하는 방식으로 되지 않을까 생각했는데, 음.. base case를 어떻게 정해야 하나? if rowindex == 0: return [1]이랑 if rowindex == 1: return [1,1]는 맞을 것 같긴한데... 그.. 2022. 2. 1.
Leetcode recursion (재귀): Swap Nodes in Pair 파이썬 풀이 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 문제: Swap Nodes in Pairs 등급: Medium 어떻게 풀어야할까. Recursion을 공부하면서 나온 문제니까, recursive function으로 풀어야 할 텐데.. Guideline으로 적혀있는 것은: 1. 첫 두 개의 노드를 바꾼다 (head and head.next) 2. swap(head.next.next)를 계속 불러서 list의 전체의 노드들의 value가 바뀌도록 한다. 3. 그런 다음 새로운 list의 head를 반환한다. 처음 step은 문제가 없다. (일 줄 알았는데).. 2022. 1. 26.
Leetcode Path Sum Python 풀이 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 문제: Path Sum 등급: Easy 이것도 나에게는 왜 이렇게 어려운지. # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution(object): def hasPathSum(self, root, targetSum): if not .. 2022. 1. 24.
Leetcode - Binary Tree Postorder Traversal(후위 순회) Python 파이썬 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 2022.01.17 - [Binary Tree / 이진 트리] Leetcode - Binary Tree Inorder Traversal Python 파이썬 문제: Binary Tree Postorder Traversal 등급: EASY 너무나도 많이 고민했다. 어제 적은 코드에서 무엇을 바꾸면, root를 자연스럽게 마지막에 더할수 있을까? 고민했다. (어제 2번 코드 참고) 처음에 들은 생각은, while loop에 if 식을 하나 넣으면 되지 않을까 생각했다. 이 방식은 되지 않았다. if를 넣는다면,.. 2022. 1. 19.
leetcode: Binary Tree Level Order Traversal (python / 파이썬) 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 문제: Binary Tree Level Order Traversal 등급: MEDIUM 어떻게 하면 각 level 별로 리스트를 출력할 수 있을까... 한 30분간 고민했던 것 같다. 그런데 생각을 못했다. ㅠㅠ 우선 기존의 preorder, postorder 등은 잘 할 수 있을 거라고 생각된다. 그런데, level 별 리스트를 어떻게 하지? count을 사용해서 각 level의 count를 하나씩 늘려가면서 해볼까 생각해봤는데 그 level를 언제 +1 하게 만들 것인가라는 질문에 대답을 하지 못하였다.. 2022. 1. 18.
leetcode: Binary Tree Level Order Traversal (python / 파이썬) 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 문제: Binary Tree Level Order Traversal 등급: MEDIUM 어떻게 하면 각 level 별로 리스트를 출력할 수 있을까... 한 30분간 고민했던 것 같다. 그런데 생각을 못했다. ㅠㅠ 우선 기존의 preorder, postorder 등은 잘 할 수 있을 거라고 생각된다. 그런데, level 별 리스트를 어떻게 하지? count을 사용해서 각 level의 count를 하나씩 늘려가면서 해볼까 생각해봤는데 그 level를 언제 +1 하게 만들 것인가라는 질문에 대답을 하지 못하였다.. 2022. 1. 18.
[Binary Tree / 이진 트리] Leetcode - Binary Tree Inorder Traversal Python 파이썬 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 어제 Binary Search와 이어집니다. 2022.01.16 - [코딩 공부] - [Binary Tree / 이진트리] Leetcode - Binary Tree Preorder Traversal Python 파이썬 문제: Binary Tree Inorder Traversal 등급: EASY (분명 easy인데... easy인데..!!) 내용: "Given the root of a binary tree, return the inorder traversal of its nodes' values." clas.. 2022. 1. 17.
[Binary Tree / 이진 트리] Leetcode - Binary Tree Preorder Traversal Python 파이썬 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 주제: Binary Tree - Traverse a Tree 문제: Binary Tree Preorder Traversal 등급: EASY 내용: "Given the root of a binary tree, return the preorder traversal of its nodes' values." root 노드가 주어진 이진트리이다. 내가 한 것은 recursive method이다. 도대체 iterative method으로 어떻게 풀지는 몰랐다. 솔직히 recursive도 이해 완전히 한 것은 아니다... 2022. 1. 16.
Leetcode Move Zeroes Python 파이썬 시도 요즘에는 개발자들이 회사에 취업하기 위해서 사용한다는 리트코드 (leetcode) 사이트의 문제들을 풀어보고 있습니다. 이제 막 시작한 초보자라 힘든 점이 많아서 이렇게 글로 남겨서 복습하려고 합니다. 문제: Move Zeroes 등급: Easy 내용: 정수 배열 nums가 주어지면, 0을 모두 오른쪽 끝으로 움직여라. * 정수 배열 nums를 복사 X 첫 번째 시도: 머리에 바로 든 생각은, 배열에 있는 0을 다 없애면서 갯수를 카운트하여 그만큼 또 더하자고 생각했다. 속도 면에서는 딱히 좋은 코딩 방법은 아니지만, 어쨌든 통과는 시켜줬으니 좋다고 해야겠다. class Solution(object): def moveZeroes(self, nums): count = 0 while 0 in nums: nu.. 2022. 1. 14.