일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이싼
- 백트래킹
- 오블완
- streamlit
- 4948
- 재귀
- 백준
- 신경망 학습
- n과 m
- end to end
- 개발환경
- N-Queen
- 기계학습
- 밑바닥부터 시작하는 딥러닝
- 그리디 알고리즘
- 1002
- 가상환경
- REST
- 파이썬
- REST API
- 경사하강법
- 티스토리챌린지
- pyenv
- BOJ
- Python
- 15649
- 1101
- 손실함수
- 9020
- 실버
- Today
- Total
목록알고리즘 (29)
파이톨치
start, end = map(int, input().split()) a = end - start answer = 0 k = 0 while(1): # print(a, 10**k, int(start/(10**k))% 10) if a > 10 ** k: k += 1 else: if int(start/(10**k))%10 == 8: if int((start+a)/(10**k))%10 == 8: answer += 1 k += 1 if 10 ** k > end: break print(answer)
N, K = map(int, input().split()) array = list(map(int, input().split())) sum_list = [] s = sum(array[0:0+K]) sum_list.append(s) for i in range(N-K): s = s-array[i]+array[i+K] sum_list.append(s) print(max(sum_list))
a = input() b = input() array = [[0 for i in range(len(b)+1)] for i in range(len(a)+1)] for i in range(len(a)): for j in range(len(b)): if a[i] == b[j]: array[i+1][j+1] = array[i][j] + 1 else: array[i+1][j+1] = max(array[i][j+1], array[i+1][j]) # 확인용 # for i in range(len(a)): # print(array[i]) print(array[len(a)][len(b)])
# 서론 자료구조론에서 잘 못했던 트리를 다시 배운다. 중간고사까지는 거의 복습을 하는데 1학기 내용을 다 하니 좀 힘들지도... 후반부 부터는 하나도 모르는데 큰일났다... 교수님이 자료 구조 복습을 조금 시켜주셨다. 배열과 링크드 리스트라는 자료구조가 있다. 정렬된 배열의 경우에 삽입 삭제는 O(N)이 걸린다. 옮겨주어야 하기 때문이다. 바이너리 서치를 하면 탐색의 시간은 O(log(N))이 된다. 정렬된 링크드 리스트 삽입 삭제는 그냥 O(1)이지만 탐색을 할 때는 헤드에서 넘어가야 해서 O(N)이다. 때문에 서로 장단점이 있다. 이 때, 둘 다 괜찮게 나오는게 Tree이다. 물론 상황에 맞게 사용해야겠지만 말이다. # Binary Search Tree Graph G = (V, E) 이때 조건을 만..
보호되어 있는 글입니다.

Greedy Algorithm 그리디 알고리즘은 알고리즘의 한 종류이다. 그리디 알고리즘에서 Greedy 는 탐욕을 뜻한다. 이 알고리즘은 미래의 상황을 따지지 않는다. 그 상황에서 가장 좋은 선택을 한다. 위키백과에는 다음과 같이 정의되어 있다. A greedy algorithm is any algorithm that follows the problem-solving heuristic of making the locally optimal choice at each stage 하지만 여기서 알고리즘을 푸는 우리가 생각할 것은 현재 상태에서 무엇이 최선의 선택인가일 것이다. 매번 좋은 선택을 하면 최고이겠지만 매번 멍청한 선택을 하면 나락이다. 수리공 상승 문제 문제를 보면서 이해를 해보자. 문제 링크는 ..

[문제 출처] https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net [어떻게 풀까?] 처음엔 굉장히 간단하게 생각했다. 문제 구현이 복잡한 것도 아니고 어려운 알고리즘을 구성하는 것도 아니었기 때문이다. 하지만 당연하게도 시간초과가 뜨고 말았다. 왜 그런가 생각해 봤다. 이 문제는 큐에 관한 문제이다. 하지만 큐도 사용하지 않고 문제를 풀려고 했기 때문에 시간초과가 뜬 것은 어찌보면 당연한 일이다. 파이썬에서 큐에 대해 사용..

[문제 및 출처] https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net [내용] 이건 그냥 하면 된다. 순서대로 정렬하고 더해주기. [코드] n = int(input()) array = list(map(int, input().split())) array.sort() result = 0 for i in range(n): result += (array[i] * (n-i)) print(result)