일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 앱
- 9095
- LCS
- 나머지
- 11057
- Combination
- 11054
- 11053
- 파이썬
- permutation
- 1260
- 백준
- 뒤로가기
- 1182
- 코테
- itertools
- 안드로이드
- 매일11시
- Kotlin
- Python
- lcm
- 순열
- expo
- 코틀린
- Android
- 11기
- 괄호
- 6603
- 홈화면
- 최소공배수
- Today
- Total
목록파이썬 (50)
황소개발자
리스트에서 pop할 때, 시간복잡도는 O(n) 이다. 그러나 콜렉션에 디큐에서 pop의 시간복잡도는 O(1) 로 구현되어있다. import sys from collections import deque input = sys.stdin.readline dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] w, h = map(int, input().split()) mat = [] for i in range(h): mat.append(list(map(int, input().split()))) q = deque() for i in range(h): for j in range(w): if mat[i][j] == 1: q.append([i, j]) def bfs(): global q while q: n..
n = int(input()) mat = [] for i in range(n): mat.append(list(map(int, input().split()))) def next_permutation(lst): n = len(lst) i = n - 1 while i > 0 and lst[i - 1] >= lst[i]: i -= 1 if i == 0: return [-1] j = n - 1 while lst[i - 1] >= lst[j]: j -= 1 tmp = lst[j] lst[j] = lst[i - 1] lst[i - 1] = tmp lst = lst[:i] + sorted(lst[i:]) return lst pathes = [] path = [i for i in range(2, n + 1)] while..
import sys input = sys.stdin.readline n = int(input()) lst = list(map(int, input().split())) lst.sort() def next_permutation(lst): n = len(lst) i = n - 1 while i > 0 and lst[i - 1] >= lst[i]: i -= 1 if i == 0: return [-1] # i - 1 j = n - 1 while lst[j]
n = int(input()) def next_permutation(lst): n = len(lst) i = n - 1 while i > 0 and lst[i - 1] >= lst[i]: i -= 1 if i
import sys input = sys.stdin.readline n = int(input()) lst = list(map(int, input().split())) def prev_permutation(lst): if len(lst) == 1: return [-1] for i in range(len(lst) - 1, 0, -1): if lst[i] .. hjp845.tistory.com
import sys input = sys.stdin.readline n = int(input()) lst = list(map(int, input().split())) def next_permutation(lst): if len(lst) == 1: return [-1] for i in range(len(lst) - 1, 0, -1): if lst[i] > lst[i - 1]: break if i == 1 and lst[0] > lst[1]: return [-1] # i - 1 인덱스하고 i ~ len(lst) - 1 인덱스에서 # i-1 인덱스값보다 크면서 제일 작은거랑 바꿔야함 # 끝에는 내림차순이기에 끝에서부터 비교 ㄱㄱ for j in range(len(lst) - 1, -1, -1): if lst[..
import sys input = sys.stdin.readline def go(sum, n): if sum == n: return 1 if sum > n: return 0 return go(sum + 1, n) + go(sum + 2, n) + go(sum + 3, n) t = int(input()) for i in range(t): n = int(input()) print(go(0, n)) 재귀를 써서 풀었습니다. 1. 목표하는 값에 도달했으면 경우의 수 1 증가 2. 목표하는 값을 초과하면 버리기 3. 목표하는 값을 향해 달려가는데, 1을 증가하거나 2를 증가시키거나 3을 증가시키거나 쉽죠?
난 이 문제 심각하게 고민했다 주어진 e, s, m 을보고 지금 년도를 추측하라니.. 주어진 esm에서 먼저 e만큼 각 자리에 대해 빼주고, 그 다음은 s만큼, 그 다음은 m만큼.. 뺄 때 세개다 0이되면 종료 아니라면 다시 15로 넘어가거나 28로 넘어가거나.. 나머지 연산에 대해 심오한 생각을 가지고있었다. 근데 가만히 보니 시간이 2초다 2억번의 계산을 할 수 있는 시간이다 매우 충분한 시간이지 마지막 예제를 보니 7580년인거 보니 최대 년도가 저거인거 같다. 저기서 1을 더하면 다시 1 1 1이 되니까 ㅋ 하튼 2초안에 다룰 수 있다는 걸 판단한 이후에는 브루트포스 답게 매우 간단하게 풀었다. 답은 아래 코드와 같다. import sys input = sys.stdin.readline E, S,..