일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드
- 파이썬
- permutation
- 뒤로가기
- 홈화면
- 9095
- 백준
- 최소공배수
- 11053
- 괄호
- 앱
- 11057
- 매일11시
- 순열
- 1182
- Combination
- 11기
- 6603
- 나머지
- LCS
- expo
- itertools
- 코테
- Python
- Kotlin
- 11054
- Android
- lcm
- 1260
- 코틀린
- Today
- Total
목록Python (30)
황소개발자
입력이 들어오는 방식은 두가지 1. 문자열 import itertools a = '1234' print(list(map(''.join, itertools.permutations(a)))) ['1234', '1243', '1324', '1342', '1423', '1432', '2134', '2143', '2314', '2341', '2413', '2431', '3124', '3142', '3214', '3241', '3412', '3421', '4123', '4132', '4213', '4231', '4312', '4321'] 2. 숫자 배열 (문자 배열은 그냥 map(str, a) 없이 해주면 됨) import itertools a = [1, 2, 3, 4] print(list(itertools.per..
간단간단하다구 원래 기본 BFS는 큐 한개로 구현이 되지. 이거는 시간을 고려해줘야 하기 때문에, (매초마다 1칸씩 없어지는) 큐 두개로 시간과 동기화 시켜줘야 해 ^^ 아래는 흔히 틀리는 반례야 (djm03178 님이 등록해주셨어) 23 5 10000000100010010000000 00011111001111111100100 n, k = map(int, input().split()) lst1 = input() lst2 = input() lst = [lst1, lst2] visited = [[0 for i in range(n)] for _ in range(2)] visited[0][0] = 1 def bfs(): q = [] q2 = [] q2.append([0, 0]) remove = 0 while q..
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,..
최적화! import sys input = sys.stdin.readline tall = [] for i in range(9): tall.append(int(input())) sub = sum(tall) - 100 flag = False for i in range(8): for j in range(i + 1, 9): a, b = tall[i], tall[j] if a + b == sub: tall.remove(a) tall.remove(b) flag = True break if flag: break tall.sort() for x in tall: print(x) 최적화하시고 또 하세요!