[LeetCode] 637. Average of Levels in Binary Tree (Python)
·
코딩 테스트
Problem SolutiondequedefaultdictBinary Tree 문제로 같은 레벨의 노드의 합 평균값을 구하는 문제.값은 float 으로 반환해야된다.left/right node를 순회하면서 defaultidct에 각 레벨별 노드값을 저장한다.마지막에 defaultdict 에 저장된 데이터를 for문을 돌면서 합계와 평균값을 구한다. 아래는 다른 사람 풀이 중 하나def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]: queue = [root] ans = [] while queue: no_nodes_in_curr_level = len(queue) s..
[LeetCode] 3151. Special array 1 (Python)
·
코딩 테스트
ProblemSolutionarray가 주어지면 양 옆 숫자로 두 쌍을 만들었을 때 differenct parity 가 만들어지는지 확인하는 문제우선 len(array) == 1 이면 무조건 True return그 이후에는 둘다 홀수 or 짝수인지 확인 후 맞으면 False, 아니면 continue굳이 동일 숫자인지 확인 안해도되었고, 홀/짝 경우로 나누지 않고 %2 나머지 값만 확인하면 된다!def isArraySpecial(self, nums: List[int]) -> bool: if len(nums) == 1: return True for i in range(len(nums)-1): if (nums[i] % 2) == (nums[i+1..
[LeetCode] 66.Plus One (Python)
·
코딩 테스트
Problem Solutionstring1자리수 integer가 포함된 list 가 주어지고 이를 숫자로 변환 후 +1한 digit의 자리수를 list에 담아서 반환하는 문제.string -> int +1 -> string -> int 로 변환해서 풀었다.다른 사람 풀이를 보니 대부분 이렇게 푼듯 더 효율적인 코드는 아래와 같다.def plusOne(self, digits: List[int]) -> List[int]: n = len(digits) for i in range(n - 1, -1, -1): #n-1 부터 뒤에서 앞으로 반복한다. 즉 마지막 숫자부터 시작 if digits[i] 시간 복잡도는 digits 길이만큼 수행되므로 O(N)공간 복잡도는 dig..
[LeetCode] 125.Valid Palindrome (Python)
·
코딩 테스트
Problem Solutionstring이전 Palindrome number 와 유사한 문제.대/소문자를 모두 대문자 or 소문자로 변환하고. , ! ? 와 같은 punctuation과 white space 을 제거 후 palindrome 인지 체크한다.이전에 파이썬 문법 중 string 을 거꾸로 뒤집는 방법을 알아서 string[::-1] 을 사용했다. 다른 사람의 풀이를 보니 isalnum() 메소드로 알파벳 or 숫자만 필터링하고 join 해서 아주 간단하게 풀었다.def isPalindrome(self, s: str) -> bool: s = ''.join([char for char in s if char.isalnum()]).lower() return s == s[::-..
[LeetCode] 1. Two Sum (Python)
·
코딩 테스트
Problem Solutionhashhash를 사용해서 푸는 문제. 문제에서도 O(n^2) 보다 더 적은 시간 복잡도로 푸는것을 권장했다.아래는 1등 풀이class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: dt = {} for i, num in enumerate(nums): complement = target - num if complement in dt: return [dt[complement], i] dt[num] = i return [] 일반 for 문을 사용..
[LeetCode] 9. Palindrome Number (Python)
·
코딩 테스트
Problemhttps://leetcode.com/problems/palindrome-number/description/?envType=study-plan-v2&envId=top-interview-150 Solutionarray정수 x 가 주어지면 앞뒤 거꾸로 바꾸어도 동일한 숫자가되는지 체크하는 문제.stack 을 사용하면되겠다고 생각했다. 몰랐는데 파이썬에서 string 을 거꾸로 뒤집는 방법이있었다 ㄷㄷ아래가 바로 그 코드s = str(x)return s == s[::-1] 다른 방법은 10으로 나눈 나머지를 tmp 변수에 * 10 하며서 더해준다.오리지널 x 는 10으로 나눈 몫으로 업데이트 해준다.class Solution: def isPalindrome(self, x: int) -> bo..