본문 바로가기

전체 글199

Leet code 242 - Valid Anagram 문자열 입력 s,t에 대해 애너그램관계에 있는지 판단 하는 문제이다 나의 풀이 처음에는 해쉬맵을 사용해볼까 했으나, list변환 이후 sort하면 간단히 풀릴 것 같아 list.sort를 활용하였다. class Solution: def isAnagram(self, s: str, t: str) -> bool: # 각 문자의 개수가 일치하는가? # s의 각 문자 개수를 해쉬맵으로 # t의 각 문자 개수를 해쉬맵으로 # 걍 쏘트해서 비교하면 되는거 아님? ls_s = list(s) ls_t = list(t) ls_s.sort() ls_t.sort() return True if ls_s == ls_t else False 2023. 5. 16.
Leet code 104 - Maximum Depth of Binary Tree 첫번째 트리 문제이다.. 처음에는 input이 리스트로 주어지는 줄 알고, 리스트에 null까지 있겠다그냥 단순히 원소 갯수 몇개인지 재귀적으로 나눠주고 +1을 하려햇으나 문제를 잘읽어보면 제일 binary tree node클래스에 대해 정의가 되어 있다. 1. dfs를 이용한 풀이 # 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 class Solution: def maxDepth(self, root: Optional[TreeNode]) -> int: ''' 널도.. 2023. 5. 16.
Leet code 3 - Longest Substring Without Repeating Characters 내 풀이. 브루트 포스를 활용한 풀이 class Solution: def lengthOfLongestSubstring(self, s: str) -> int: dict1 = {} result = 0 cnt = 0 if len(s) == 1 : return 1 for i in range(len(s)): for j in range(i,len(s)): if s[j] in dict1: result = max(cnt, result) cnt = 0 dict1 = {} break cnt += 1 dict1[s[j]] = 0 return result 중복 발생시 시작 인덱스를 바꿔가며 처음부터 세준다. 순회했던 문자열은 후에 다시 탐색하는 시간이 추가적으로 발생하는 것을 막기 위해 해쉬를 사용해 준다. 길이가 1일때는 .. 2023. 5. 15.
LV2 - 다음 큰 숫자. 리트 코드를 꾸준히 푼 덕택일까 원래는 못풀던 문제가 술술 풀린다. 나의 풀이. def solution(n): answer = 0 cnt = bin(n)[2:].count("1") while True: n += 1 if bin(n)[2:].count("1") == cnt: return n #1의 숫자가 일정해야 한다..1의 숫자가 5개인 모든 수의 리스트를 만들 수 있지 않을까? 1의 개수는 일정해야 한다. count함수로 주어진 n에 포함된 1의 개수를 세고, n을 1 씩 증가시켜, n보다 크면서 포함된 1의 개수가 큰 이진수를 만났을때 n을 반환한다. 2023. 5. 4.