일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- itertools
- 11057
- 11054
- expo
- 순열
- 매일11시
- permutation
- 뒤로가기
- 안드로이드
- 11053
- Kotlin
- 괄호
- 홈화면
- 11기
- Combination
- 백준
- 9095
- Python
- lcm
- Android
- LCS
- 6603
- 나머지
- 코테
- 1260
- 앱
- 코틀린
- 최소공배수
- 파이썬
- 1182
- Today
- Total
목록백준 문제 풀이 (154)
황소개발자
입력이 들어오는 방식은 두가지 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..
뚝딱해부려 10 팩토리얼이 얼말까? 3,628,800 11 팩토리얼이 약 4000만 근데 여기선 10자리수가 최대, 근데 심지어 1,000,000,000 까지니까 실상 9팩토리얼이다. 시간복잡도가 10팩토리얼까지여도 가능한데 9 팩토리얼은 매우 안전빵이다. import sys import itertools input = sys.stdin.readline a, b = input().split() b = int(b) lst = list(map(''.join, list(itertools.permutations(a)))) c = -1 for num in lst: first = num[0] num = int(num) if b >= num and first != '0': c = max(c, num) print(c)
글램핑가고싶다.. 2의 30승은 10억 2의 20승은 100만, 20승까지는 안전하게 1초안에 해결되니까.. N 이 15인 관계로 모든 탐색 ㄱㄱ 비트연산하면 쉬워유 N, L, R, X = map(int, input().strip().split()) A = list(map(int, input().split())) A.sort() ans = 0 for i in range(1 = X and L
포스트말론 노래 너무 좋음 모든 조합 다 따져주고, 돌리는 것도 따져주고 확인할 때, 방법이 단순한데 스티커가 두개니까,, 가로로 나열하거나 세로로 나열하거나,, 이게 제일 이득이다. import sys input = sys.stdin.readline h, w = map(int, input().split()) n = int(input()) sks = [] for i in range(n): sks.append(list(map(int, input().split()))) def check(s1, s2): # garo if s1[0] + s2[0]
마치 이 뭔가 분열되어가며 답을 찾는 이 느낌. n = int(input()) B = list(map(int, input().split())) def go(x, b, A): b.remove(x) A.append(x) least_one = False if not b: return True if x * 2 in b: least_one = True return go(x * 2, b, A) if x % 3 == 0 and x // 3 in b: least_one = True return go(x // 3, b, A) if not least_one: return False for i in range(n): A = [] flag = go(B[i], B.copy(), A) if flag: print(*A) break..
채점하는데 오래걸려서 유튭보고 왓넹 import sys input = sys.stdin.readline h, w = map(int, input().split()) check = [[0 for i in range(w)] for j in range(h)] mat = [] ans = [] # x, y, s dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] def checks(y, x): for s in range(1, w): flag = True for i in range(4): ny = y + dy[i] * s nx = x + dx[i] * s if 0
첫 번째 생각, 각 순서에 대해서 4개가 들어갈 수 있으니까 4 ^ 20 시간복잡도 두 번째 생각, 순서는 중요하지 않다고 했으니 그냥 각각 몇개들어가는지 고려하기 마지막, 마지막 문자는 앞에 3개로 정해진거에서 빼기 연산해서 정하기 그러면 20 ^ 3 시간복잡도 n = int(input().strip()) lst = [] for i in range(n + 1): for j in range(n + 1 - i): for k in range(n + 1 - i - j): t = n - i - j - k total = i * 1 + j * 5 + k * 10 + t * 50 lst.append(total) print(len(set(lst))) 파이썬의 장점을 살려서 set 을 썻다. 다른 방법은, 따로 배열을 ..
경우의 수 따져주기 ㅋ d 일 때 앞에께 d 였으면 9 곱해주고 아니면 10 곱해주고 느낌알지 s = input() ans = 1 if s: ans = 26 if s[0] == 'c' else 10 for i in range(1, len(s)): if s[i] == 'c': if s[i - 1] == 'c': ans *= 25 else: ans *= 26 else: if s[i - 1] == 'd': ans *= 9 else: ans *= 10 print(ans)