문제 J는 보석이며, S는 갖고 있는 돌이다. S에는 보석이 몇 개나 있을까? ₩대소문자는 구분₩한다. leetcode 771 - Jewels and Stones 코드 class Solution: def numJewelsInStones(self, J: str, S: str) -> int: freqs = {} count = 0 # 돌(S)의 빈도 수 계산 for char in S: # 처음이면 1 저장 if char not in freqs: freqs[char] = 1 else: # 이미 있으면 +1 freqs[char] += 1 # 보석(J)의 빈도 수 합산 for char in J: if char in freqs: count += freqs[char] return count 조금 더 파이썬스러운 코드 ..
문제 다음 연산을 제공하는 원형 데크를 디자인하라. MyCircularDeque(k): 데크사이즈를 k로 지정하는 생성자다. insertFront() : 데크 처음에 아이템을 추가하고 성공할 경우 true를 리턴한다. insertLast() : 데크 마지막에 아이템을 추가하고 성공할 경우 true를 리턴한다. deleteFromt() : 데크 처음에 아이템을 삭제하고 성공할 경우 true를 리턴한다. deleteLast() : 데크 마지막에 아이템을 삭제하고 성공할 경우 true를 리턴한다. getFromt() : 데크츼 첫 번째 아이템을 가져온다. 데크가 비어있다면 -1을 리턴한다. getRear() : 데크의 마지막 아이템을 가져온다. 데크가 비어있다면 -1을 리턴한다. isEmpty() : 데크가 ..
문제 입력 문자열은 다음 경우에 유효하다. 열린 브래킷은 동일한 유형의 브래킷으로 닫아야 합니다. 열린 브래킷은 올바른 순서로 닫아야 합니다. leetcode 20 - Valid Parentheses 코드 class Solution: def isValid(self, s: str) -> bool: stack = [] table = { ')' : '(', '}' : '{', ']' : '[', } # 스택 이용 예외 처리 및 일치 여부 판별 for char in s: if char not in table: stack.append(char) elif not stack or table[char] != stack.pop(): r..
문제 스택을 이용해 다음 연살을 지원하는 큐를 구현하라. push(x): 요소 x를 큐 마지막에 삽입한다. pop(): 큐 처음에 있는 요소를 제거한다. peek(): 큐 처음에 있는 요소를 조회한다. empty(): 큐가 비어 있는지 여부를 리턴한다. leetcode 232 - Implement Queue using Stacks 코드 class MyQueue: def __init__(self): self.input = [] self.output = [] def push(self, x: int) -> None: self.input.append(x) def pop(self) -> int: self.peek() return self.output.pop() def peek(self) -> int: # outp..
문제 스택을 이용해 다음 연산을 지원하는 큐를 구현하라. push(x) : 요소 x를 큐 마지막에 삽입한다. pop() : 큐 처음에 있는 요소를 제거한다. peek() : 큐 처음에 있는 요소를 조회한다. empty() ; 큐가 비어 있는지 여부를 리턴한다. leetcode 225 - Implement Stack using Queues 코드 class MyStack: def __init__(self): self.q = collections.deque() def push(self, x: int) -> None: self.q.append(x) # 요소 삽입 후 맨 앞에 두는 상태로 재정렬 # popleft : pop(0)과 같지만, O(1)의 시간복잡도를 가짐 // pop(0)은 O(n) # 1,2,3,4..
문제 연결 리스트를 뒤집어라. leetcode 206 - Reverse Linked List 코드 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: node, prev = head, None while node: next, node.next = node.next, prev prev, node = node, next return prev
문제 정렬된 두 개의 링크된 list1과 list2의 head가 주어진다. 두 목록을 하나의 정렬된 list로 병합하고, 병합된 list의 헤드를 반환한다. leetcode 21 - Merge Two Sorted Lists 코드 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]: # list1과 list2를 비교하여, ..
문제 배열 가격이 주어지는데, 여기서 가격은 당일 주식의 가격이다. 한 주식을 살 날을 선택하고 해당 주식을 팔 다른 날을 선택하여 이익을 극대화하려고 합니다. 이 거래로 얻을 수 있는 최대 이익을 반환하고, 만약 당신이 어떠한 이익도 얻을 수 없다면, 0을 반환하라. leetcode 121 - Best Time to Buy and Sell Stock 코드 class Solution: def maxProfit(self, prices: List[int]) -> int: profit = 0 min_price = sys.maxsize # 최솟값과 최댓값을 계속 갱신 for price in prices: min_price = min(min_price, price) profit = max(profit, price..
문제 덧셈하여 타겟(target)을 만들 수 있는 배열의 두 숫자 인덱스를 리턴하라 leetcode 1 - Two Sum 코드 from typing import List class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: nums_map = {} # 키와 값을 바꿔서 딕셔너리로 저장 for i, num in enumerate(nums): nums_map[num] = i # 타겟에서 첫 번째 수를 뺀 결과를 키로 조회 for i, num in enumerate(nums): if target - num in nums_map and i != nums_map[target-num]: return nums.index(num), n..
문제 로그를 재정렬하라. 기준은 아래와 같다. 로그의 가장 앞 부분은 식별자다. 문자로 구성된 로그가 숫자 로그보다 앞에 온다. 식별자는순서에 영향을끼치지 않지만,문자가동일할경우식별자순으로한다. 숫자 로그는 입력 순서대로 한다. leetcode 937 - Reorder Data in Log Files 코드 class Solution: def reorderLogFiles(self, logs: List[str]) -> List[str]: letters, digits = [], [] for log in logs: if log.split()[1].isdigit(): digits.append(log) else: letters.append(log) # 2개의 키를 람다 표현식으로 정렬하자 letters.sort(k..
- Total
- Today
- Yesterday
- 파이썬
- MySQL
- Algorithm
- 자료구조
- 코틀린
- 데이터베이스
- 스프링
- kotlin
- 김영한
- 리팩토링
- 스프링 부트
- 릿코드
- webflux
- Spring
- 구현
- 노마드
- 스프링부트
- 정렬
- mysql 8.0
- 인프런
- leetcode
- 북클럽
- 노마드코더
- 코테
- 그리디
- 알고리즘
- spring boot
- 백준
- Real MySQL
- 문자열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |