목록파이썬 알고리즘 인터뷰 (4)
거누의 개발노트
문제 이진 트리가 주어지면 root트리를 반전 하고 루트 를 반환합니다. 입력 root = [4,2,7,1,3,6,9] 출력 [4,7,2,9,6,3,1] 작성한 코드 # Definition for a binary tree node. class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def list_to_tree(lst, idx): parent = None if idx < len(lst): value = lst[idx] if value is not None: parent = TreeNode(value) parent.left = list_to_tree..
문제 2에서 9까지 숫자가 주어졌을 때 전화 번호로 조합 가능한 모든 문자를 출력하라. 입력 "23" 출력 ['ad', 'ae', 'af', 'bd', 'be', 'bf', 'cd', 'ce', 'cf'] 작성한 코드 def letterCombinations(digits: str) -> List[str]: if digits == '': return [] phone = [[],['a','b','c'],['d','e','f'],['g','h','i'],['j','k','l'],['m','n','o'],['p','q','r','s'],['t','u','v'],['w','x','y','z']] lst = [int(i) for i in digits] l = [phone[i-1] for i in lst] pro =..
문제 n개의 페어를 이용한 min(a, b)의 합으로 만들 수 있는 가장 큰 수를 출력하라. 입력 [1, 4, 3, 2] 출력 4 설명 n은 2가 된다. ( 2개씩 묶어서 한쌍! ), 최대합은 min(1, 2) + min(3,4) = 4 작성한 코드 def array_pair_sum(nums: List[int]) -> int: sum = 0 nums.sort() for i, n in enumerate(nums): # 인덱스가 짝수 번째인 값의 계산 if i % 2 == 0: sum += n return sum 회고 아직 문법이나 어떤 함수를 써야할지 잘 몰라서 계속 검색하면서 풀었다. 그래도 이문제는 쉽게 이해가 되었던 것 같다. https://programmers.co.kr/learn/challeng..
문제 문자열 배열을 받아 애너그램 단위로 그룹핑하라 애너그램? 일종의 말장난으로 어떠한 단어의 문자를 재배열하여 다른 뜻을 가지는 다른 단어로 바꾸는 것을 말한다. 고대 유대인들이 히브리어로 하곤 했고, 중세 유럽에도 큰 인기를 끌었다. 프랑스 궁정에서는 '왕을 위해 애너그램을 하는 사람'을 고용하기도 했을 정도다. 중세의 대표적인 어구전철은 라틴어로 된 아베 마리아 의 애너그램이다. 우리나라 말로는 '문전박대' 를 '대박전문' 으로 바꿔 부르는 단어 등이 있다. 입력 ['eat', 'tea', 'tan', 'ate', 'nat', 'bat'] 출력 [ ['eat', 'tea', 'ate'], ['tan', 'nat'], ['bat'] ] 작성한 코드 def groupAnagrams(strs: List..