목록알고리즘 문제/LEETCODE (19)
배고픈 개발자 이야기
Easy난이도 Acceptence 46.8% 문제 더했을때 target값이되는 nums의 원소 2개의 인덱스를 리스트로 반환하는 문제로 앞쪽 원소부터 찾아 정답을 구하도록 하였다. class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ for i, x in enumerate(nums): for j in range(len(nums) - i - 1): if target == nums[i] + nums[i + j + 1]: return [i, i + j + 1]
Easy난이도 Acceptence 48.7% 문제 입련된 Tree의 root node를 중심으로 왼쪽과 오른쪽이 거울처럼 뒤집었을 때 같은지를 검증하는 문제다. 문제에 root 노드는 반드시 존재하므로 compare함수에 left와 right 노드를 넣어 비교하였다. compare함수는 입력된 양쪽 노드를 비교하는 함수로 둘다 없으면 참으로 값이나 노드가 다를 경우 불로 판정하도록 만들었다. class Solution(object): def compare(self, lNode, rNode): if lNode == None and rNode == None: return True if lNode == None or rNode == None: return False if lNode.val != rNode.va..
Easy난이도 Acceptence 66.8% 문제 주어진 input에 유니크한 숫자를 반환하는 문제로 파이썬 리스트의 count 함수를 사용, 갯수가 1개만 있는 원소를 반환하였다. class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ for num in nums: if nums.count(num) == 1: return num
Easy난이도 Acceptence 56.6%의 문제 이문제는 2개의 정렬된 리스트 노드를 하나의 리스트노드로 정렬하여 반환하는 문제이다. 단순히 둘중하나가 None이면 남은 노드만 처리해주도록 추가하였고 둘다 있을경우 값을 비교하여 output을 만들어 내었다. dummy 노드를 만들어 output에 얕은 복사후 반환하면 reverse함수를 사용하지 않아도 되지만 이번 문제에선 정답으로 만든 output이 tail을 가리키고 있기 때문에 역으로 만들어 반환하였다. class Solution(object): def __init__(self): self.output = None # 검증은 했지만 정확한 원리파악이 필요 def reverse(self): prev = None cur = self.output w..
Easy 난이도 Acceptence 48%의 문제 주어진 리스트에서의 subarray중 합이 최대인 원소의 집합을 구하여 최댓값을 반환하는 문제 class Solution(object): def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int """ # Kadane's Algorithm DP curSum = maxSum = nums[0] for i, num in enumerate(nums[1:]): curSum = max(nums[i+1], nums[i+1] + curSum) maxSum = max(curSum, maxSum) return maxSum
Easy난이도 Acceptence 68.5%의 문제 자료구조의 Binary Tree의 가장 깊은 Depth를 구하는 문제로 아래의 getDepth 함수는 result 리스트에 리프노드의 depth의 집합으로 max값을 구하여 해결 class Solution(object): def getDepth(self, node, depth): result = [] if node.left is not None: result.extend(self.getDepth(node.left, depth+1)) if node.right is not None: result.extend(self.getDepth(node.right, depth+1)) if node.left is None and node.right is None: res..
Easy 난이도 문제로 Acceptence 48.8%의 문제 계단을 1칸 or 2칸씩 오르는 방법을 구하는 문제로 가능한 모든 경우의 수를 구하는 문제다. 수학의 경우의 수를 구하는 기호인 nCr을 함수로 만들어 모든 경우의 수를 구한다. class Solution(object): def __init__(self): self.caseSum = 0 def nCr(self, n, r): denominator = numerator = 1 for x in range(n-r+1, n+1): numerator *= x for x in range(1, r+1): denominator *= x return numerator//denominator def climbStairs(self, n): """ :type n: i..
1009. Complement of Base 10 Integer Easy Every non-negative integer N has a binary representation. For example, 5 can be represented as "101" in binary, 11 as "1011" in binary, and so on. Note that except for N = 0, there are no leading zeroes in any binary representation. The complement of a binary representation is the number in binary you get when changing every 1 to a 0 and 0 to a 1. For exa..