일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- 11기
- 뒤로가기
- permutation
- 코테
- 6603
- 괄호
- Kotlin
- expo
- Android
- 코틀린
- lcm
- 1260
- 홈화면
- 매일11시
- Combination
- 앱
- 나머지
- 11054
- 파이썬
- 최소공배수
- 1182
- itertools
- 백준
- 11053
- 9095
- 순열
- 11057
- 안드로이드
- LCS
- Today
- Total
목록분류 전체보기 (181)
황소개발자
첫 번째 생각, 각 순서에 대해서 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)
import sys input = sys.stdin.readline n, m = map(int, input().split()) not_hear = [] not_see = [] for i in range(n): not_hear.append(input().strip()) for i in range(m): not_see.append(input().strip()) duplicated = set(not_hear) & set(not_see) print(len(duplicated)) duplicated = sorted(list(duplicated)) for i in duplicated: print(i) 뭐 알고리즘 있을까 햇는데, 그냥 집합으로 구현. 그리고 strip 생활화^^
import sys import heapq input = sys.stdin.readline n = int(input().strip()) q = [] for i in range(n): num = int(input().strip()) if num == 0: if q: print(heapq.heappop(q)) else: print(0) else: heapq.heappush(q, num)
파이썬의 heapq 는 기본이 minheap 입니다. 이걸 어떻게 maxheap 으로 이용할 것이냐? import sys import heapq input = sys.stdin.readline n = int(input().strip()) q = [] for i in range(n): num = int(input().strip()) if num == 0: if q: print(-heapq.heappop(q)) else: print(0) else: heapq.heappush(q, -num) -num 으로 해서 음수로 바꿔서 넣어주고 꺼낼때 - 붙여서 꺼내주면 됩니다.
비트연산에 안익숙한가? 비트연산을 검색하고 더 공부해라..!! import sys input = sys.stdin.readline h, w = map(int, input().split()) mat = [] for i in range(h): mat.append(input()) ans = 0 for b in range(1
정말 대단하신 분이다.. import sys input = sys.stdin.readline w, h = map(int, input().split()) mat = [] for i in range(h): mat.append(input()) mirror = [[] for _ in range(h)] C = [] for i in range(h): for j in range(w): if mat[i][j] == 'C': C.append([i, j]) if mat[i][j] != '*': mirror[i].append(-1) else: mirror[i].append(mat[i][j]) dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] def bfs(start_y, start_x): q = [] q...
간단간단하다구 원래 기본 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..