
📚 문제 입력 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) 출력 첫째 줄에 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 출력한다. 입력 예시 5 3 1 4 3 2 출력 예시 32 🧑🏻💻 풀이 과정 낮은 순으로 점차 더해야 모든 사람이 돈을 인출하기까지 가장 적은 시간이 나온다. 입력 받은 n의 값을 오름차순 정렬 후, 반복하면서 answer에 계속 더하자. n = int(input()) times = list(map(int, input().split())) times.sort() # 시간이 낮은 순 정렬 answer = 0 for i in range(len(times)): ..

문제 백준 1966 - 프린터 큐 코드 test_case = int(input()) for _ in range(test_case): n, m = list(map(int, input().split(' '))) queue = list(map(int, input().split(' '))) queue = [(i, idx) for idx, i in enumerate(queue)] count = 0 while True: if queue[0][0] == max(queue, key=lambda x: x[0])[0]: count += 1 if queue[0][1] == m: print(count) break else: queue.pop(0) else: queue.append(queue.pop..

문제 백준 1920 - 수 찾기 코드 n = int(input()) n_list = list(map(int, input().split())) m = int(input()) m_list = list(map(int, input().split())) n_list.sort() def binary_search(value, start, end): if start > end : return False median = (start + end) // 2 if n_list[median] > value: return binary_search(value, start, median-1) elif n_list[median] < value: return binary_search(value, median+1, end) else: r..

문제 백준 9461 - 파도반 수열 코드 dp = [0] * 101 dp[1], dp[2], dp[3] = 1, 1, 1 # 1, 1, 1, 2, 2, 3, 4, 5, 7 # 점화식 dp[n+3] = dp[n] + d[n+1] # index[5]값 3은 index[2] + index[3]의 합이다. for index in range(1, 98): dp[index+3] = dp[index] + dp[index + 1] n = int(input()) for i in range(n): print(dp[int(input())])

문제 일반적인 동적 계획법 문제는 통상 코드 자체는 간결하므로, 가장 적은 경우의 수부터 계산을 해본 후, 패턴을 찾아 점화식을 세우는 것이 핵심! 백준 11726 - 2xn 타일링 코드 n = int(input()) dp = [0] * 1001 dp[1] = 1 dp[2] = 2 # 점화식 dp[n] = dp[n-1] + dp[n-2] for i in range(3, 1001): dp[i] = dp[i - 1] + dp[i - 2] print (dp[n] % 10007)

문제 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..
- Total
- Today
- Yesterday
- 코틀린
- kotlin
- 문자열
- 리팩토링
- 알고리즘
- 김영한
- 정렬
- 스프링부트
- Algorithm
- Spring
- 노마드코더
- 자료구조
- 스프링
- leetcode
- 북클럽
- 데이터베이스
- 릿코드
- webflux
- mysql 8.0
- Real MySQL
- 스프링 부트
- 인프런
- 코테
- 파이썬
- 노마드
- 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 |