문제 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..
문제 프로그래머스 - 완주하지 못한 선수 코드 def solution(participant, completion): d = {} # 같은 이름이 존재하면 1을 더하고, 존재하지 않으면 0 저장 for x in participant: d[x] = d.get(x, 0) + 1 for x in completion: d[x] -= 1 dnf = [k for k, v in d.items() if v > 0] return dnf[0]
문제 연결 리스트를 뒤집어라. 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..
- Total
- Today
- Yesterday
- 스프링
- 리팩토링
- leetcode
- MySQL
- 인프런
- Spring
- webflux
- 파이썬
- 정렬
- 그리디
- Algorithm
- kotlin
- mysql 8.0
- 데이터베이스
- 코틀린
- 스프링 부트
- 알고리즘
- 백준
- 노마드
- 자료구조
- Real MySQL
- spring boot
- 코테
- 구현
- 릿코드
- 김영한
- 스프링부트
- 문자열
- 북클럽
- 노마드코더
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |