일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드
- expo
- permutation
- 6603
- Android
- 뒤로가기
- 11057
- 괄호
- Combination
- 최소공배수
- 코틀린
- 코테
- 9095
- itertools
- Python
- 홈화면
- LCS
- 11053
- 11기
- 11054
- 앱
- 1260
- lcm
- 매일11시
- 파이썬
- Kotlin
- 백준
- 나머지
- 1182
- 순열
- Today
- Total
목록백준 (48)
황소개발자
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,..
최적화! 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) 최적화하시고 또 하세요!
에레토스테네스의 체 구현해도 시간초과나서 최적화하는데 꽤 걸렷네요 import sys input = sys.stdin.readline num_list = [] while True: n = int(input().strip()) if n == 0: break num_list.append(n) max_num = max(num_list) sosu = [1 for i in range(max_num + 1)] sosu[1] = 0 only_sosu = [] i = 2 while i