일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1182
- 파이썬
- Combination
- 11기
- 11054
- permutation
- 안드로이드
- 9095
- LCS
- 11053
- 매일11시
- 홈화면
- expo
- 6603
- itertools
- lcm
- 백준
- Python
- 11057
- 최소공배수
- 괄호
- 순열
- 앱
- Kotlin
- 1260
- 나머지
- 코테
- 뒤로가기
- 코틀린
- Android
- Today
- Total
목록전체 글 (181)
황소개발자
( 괄호가 레이저를 만난 개수를 세면 되는데, 그리고 ) 와 만나 괄호가 닫힐 때, 지금까지 만난 (레이저 개수 + 1) 을 ans 에 더하면되고, 지금 까지 만난 괄호의 개수를 더 밑에 있는 막대기에게 알려주고 떠나가면 된다. ps = input().strip() ans = 0 stack = [0] for i in range(1, len(ps)): if ps[i] == '(': stack.append(0) elif ps[i] == ')': if stack[-1] == 0: if len(stack) >= 2: stack[-2] += 1 stack.pop() elif stack[-1] != 0: if len(stack) >= 2: stack[-2] += stack[-1] ans += stack[-1] + ..
( 는 그냥 넣어주고 ) 는 넣을때 스택의 끝이 무조건 ( 이어야합니다. 아니면 바로 NO, ( 이면 스택에서 ( 를 빼줍니다. ) 은 넣지마세요. 그리고 스택이 텅텅 비어있으면 vps 남아 있으면 vps 가 아닙니다. import sys input = sys.stdin.readline n = int(input()) for i in range(n): stack = [] ps = input().strip() flag = True for p in ps: if p == '(': stack.append(p) else: if not stack: flag = False break if stack[-1] != '(': flag = False break else: stack.pop() if flag and not st..
dp[n] = dp[n - 1] + dp[n - 2] 에요. 왜냐면 1을 붙이거나 00을 붙이기 때문이에요 1을 1칸이니까 dp[n - 1] 빼기 1이고, 00은 2칸이니까 dp[n - 2] 빼기 2에요. . 그리고 n == 1 일때 예외처리 해주시고, (런타임에러) % 까먹지 마시고 (메모리초과) n = int(input().strip()) dp = [0] * (n + 1) if n == 1: print(1) exit() dp[1] = 1 dp[2] = 2 for i in range(3, n + 1): dp[i] = (dp[i - 1] + dp[i - 2]) % 15746 print(dp[-1] % 15746)
지금 시국.. 김정은 사망설 난무.. 북한 입장 아직까지도 안나오는거 보면, 뭔가 있긴 한갑다.. dp 배열의 정의는 dp[i][j] : 1행 1열 부터 i 행 j열 까지의 합 답 구할 땐, dp[y][x] - dp[y][j - 1] - dp[i - 1][x] + dp[i - 1][j - 1] 이런식으로 빼주고 두번 빼진건 한 번 더해주고 import sys input = sys.stdin.readline h, w = map(int, input().split()) mat = [] for i in range(h): mat.append(list(map(int, input().split()))) dp = [[0 for _ in range(w + 1)] for _ in range(h + 1)] for i in ..
외적이다. 도형의 넓이 구할 때, 선분이 교차하는지 확인할 때, 도형을 만들 때, 등등 다 쓰인다. dot = [] for i in range(3): dot.append(list(map(int, input().split()))) def ccw(p1, p2, p3): x1, y1 = p1 x2, y2 = p2 x3, y3 = p3 return (x1 * y2 + x2 * y3 + x3 * y1) - (x2 * y1 + x3 * y2 + x1 * y3) result = ccw(dot[0], dot[1], dot[2]) if result > 0: print(1) elif result < 0: print(-1) else: print(0) 요즘 애들은 이제 벡터를 안배운다던데, 참.. 필자 때 딱 행렬이 끊겨서...
집어 넣을 때, 큰 놈이 앞에 있는걸 만족하면 그 때 넣어주는거 넣어 줄 때, 0이 아니면 그 다음 칸으로 n = int(input()) lst = list(map(int, input().split())) line = [0] * n def insert(num, big): cnt = 0 i = 0 while i = num: cnt += 1 elif line[i] < num: pass i += 1 line[i] = num for i in range(n): insert(i + 1, lst[i]) # something : ls..
999,999,999 하면 메모리에러 천만부터 느려지고 2억까지 가능 3억부터 메모리에러 백만까지 스무스하게 빠르게 생성 가능 100,000,000 (일억)이 381 MB 크기
레츠기릿 n = int(input()) lst = list(map(int, input().split())) import itertools dp = [[[-1 for _ in range(61)] for _ in range(61)] for _ in range(61)] def go(a, b, c): if a < 0: return go(0, b, c) if b < 0: return go(a, 0, c) if c < 0: return go(a, b, 0) if a == 0 and b == 0 and c == 0: return 0 if dp[a][b][c] != -1: return dp[a][b][c] dp[a][b][c] = 999999999 for case in list(itertools.permutations..