일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- Gunicorn
- codecov
- ws
- Django
- pytest
- Python
- permutations
- Query
- Git
- ORM
- SQL
- TDD
- HTTP 완벽 가이드
- stateless
- greedy
- Q objects
- stack&que
- was
- Unit Testing
- Bruteforce
- stateful
- combinations
- algorithm
- postreSQL
- AWS
- utils
- Stack
- Programmers
- dictionary
- Today
- Total
목록algorithm (28)
해피 코딩!
문제링크 해답 코드 import collections dic = collections.defaultdict(int) n = int(input()) card_lst = list(map(int, input().split())) m = int(input()) find_card = list(map(int, input().split())) for i in card_lst: dic[i] += 1 answer = [] for i in find_card: if dic.get(i): answer.append(dic.get(i)) elif not dic.get(i): answer.append(0) print(' '.join(map(str, answer))) 문제풀이 숫자 카드는 정수 하나가 적혀져 있는 카드..
문제 링크 정답 코드 n = int(input()) lst = list(map(int, input().split())) answer = [-1] * n stack =[] for i in range(n): while stack and lst[stack[-1]] < lst[i]: answer[stack.pop()] = lst[i] stack.append(i) print(' '.join(map(str, answer))) 시간초과 코드 O(n^2) # 시간초과 코드 import sys _ = sys.stdin.readline() lst = list(map(int, sys.stdin.readline().split())) answer = [] for index, value in enumerate(ls..
백준 9012번 문제 링크 for _ in range(int(input())): stck = [] data = list(map(str, input())) break_point = True while data: head = data.pop(0) if head == ')': if not stck: break_point = False break else: stck.pop(0) else: stck.append(head) if break_point: if not stck: print('YES') else: print('NO') else: print('NO') 문제 요약 해당 문제는 스택을 사용하여 괄호 문자열이 전부 제거가 되었다면 "YES"를 출력 그렇지..
링크 def solution(s): if ('-' not in s) and ('+' not in s): return s answer = 0 s=s.split('-') for index, value in enumerate(s): if index ==0: answer = 0 if '+' in value: value = value.split('+') for i in value: answer+=int(i) else: answer+=int(value) else: if '+' in value: value = value.split('+') for i in value: answer-=int(i) else: answer-..
링크 from collections import defaultdict import statistics import sys dic = defaultdict(int) lst = [] for _ in range(int(sys.stdin.readline())): value = int(sys.stdin.readline()) lst.append(value) dic[value] +=1 # 1. 산술 평균 -> 소수점 이하 앞 자리 반올림 값 sum_var = 0 div = 0 for k, v in dic.items(): div += v sum_var += (k*v) print(round(sum_var/div)) # 2. 중앙 값 print(statistics.median(lst)) # 3. 최빈값 여러 개 있을 때에..
링크 n = int(input()) p_lst = list(map(int, input().split())) p_lst.sort(key = lambda x:x) sum_data = 0 answer = 0 for i in p_lst: sum_data+=i answer+=sum_data print(answer) 피보나치 형식으로 풀어보려다가 괜히 시간을 많이 날린 문제였다..
링크 n, k = map(int, input().split()) # 점화식을 위해 메모이제이션 할 리스트를 생성 dp = [[0] * (k+1) for _ in range((n+1))] for i in range(1, n+1): weight, value = map(int, input().split()) for j in range(1, k+1): # 만약 순회하는 값이 무게보다 작다면 if j < weight: # 값을 그대로 상속받는다. 이유로는 해당 kg에 해당하는 짐이 되지 않기 때문이다.(1kg에 3kg에 해당하는 짐을 넣을 수 없기 때문이다.) dp[i][j] = dp[i-1][j] else: # 순회하는 값이 받은 값보다 크거나 같다면 해당 무게에 해당하는 최대 가치를 담는다. dp[i][j] ..
링크 이번 문제는 계수정렬을 사용하여 해결하는 알고리즘 문제이다. 계수정렬 (Counting sort) 수의 범위가 제한적일 때 사용하는 알고리즘. 배열의 인덱스를 특정한 데이터의 값으로 여기는 정렬 방법. 배열의 크기는 데이터의 범위를 포함할 수 있도록 설정. 데이터가 등장한 횟수를 센다. lst = [0] * 10_001 import sys for _ in range(int(sys.stdin.readline())): n = int(sys.stdin.readline()) lst[n] +=1 for index, value in enumerate(lst): if value == 0: continue while value > 0: print(index) value-=1 입력의 양이 많다면 sys.stdin...