일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 트리
- 구현
- BFS
- 자료구조
- 그래프 이론
- 다이나믹프로그래밍
- GROUP BY
- 투포인터
- 시뮬레이션
- 우선순위큐
- 다이나믹 프로그래밍
- 브루트포스
- 누적합
- 분할정복
- 해시
- DP
- 백트래킹
- 서브쿼리
- 다익스트라
- MST
- 다시
- 플로이드-워셜
- 그래프 탐색
- 수학
- 에라토스테네스의 체
- 재귀
- join
- 그리디
- 크루스칼
- DFS
- Today
- Total
목록전체 글 (373)
기록하고 까먹지 말기

날짜 : 2023. 04. 05 사용 언어 : python 문제 코드 import sys n = int(sys.stdin.readline()) # 치킨집 개수 a = list(map(int, sys.stdin.readline().split())) # 치킨 k = int(sys.stdin.readline()) idx = n // k for i in range(0, n, idx): temp = a[i:i+idx] temp.sort() for j in temp: print(j, end=" ") 풀이 - n // k 를 수행하여 분할할 단위를 정한 후 기본 라이브러리의 sort() 메소드를 이용해 정렬한 값을 출력한다. 알게된 점 - 정석적으로 mergesort를 활용해서 풀이하려고 했지만 뭐가 잘못되었는지 계..

날짜 : 2023. 04. 04 사용 언어 : python 문제 코드 import sys def dac(a, b, c): if b == 1: return a % c if b % 2 == 0: # 횟수가 짝수 return (dac(a, b // 2, c) ** 2) % c else: return ((dac(a, b // 2, c) ** 2) * a) % c a, b, c = map(int, sys.stdin.readline().split()) # a를 b번 곱한 후 c로 나머지 구하기 print(dac(a, b, c)) 풀이 - 단순 for문으로 사용한다면 int값의 초과, 시간초과가 발생하기 때문에 분할정복을 이용하여 문제를 풀이한다. - 두 수의 지수의 경우 다음과 같은 방식으로 변형이 가능하다. 기본..

날짜 : 2023. 04. 03 사용 언어 : python 문제 코드 import sys from collections import deque t = int(sys.stdin.readline()) # 테스트케이스 def num(t): # 자릿수 -> 숫자 변환 a = str(t) d1, d2, d3, d4 = 0, 0, 0, 0 if len(a) == 4: d1, d2, d3, d4 = a[0], a[1], a[2], a[3] elif len(a) == 3: d2, d3, d4 = a[0], a[1], a[2] elif len(a) == 2: d3, d4 = a[0], a[1] else: d4 = a[0] return int(d1), int(d2), int(d3), int(d4) def bfs(a): q..

날짜 : 2023. 03. 31 사용 언어 : python 문제 코드 import copy import sys from collections import deque t = int(sys.stdin.readline()) # 테스트케이스 def AC(com, a): flag = True r = 1 for c in com: # 명령어 if c == "R": r *= (-1) else: if len(a) == 0: # 리스트가 비어있는 경우 flag = False break else: if r == 1: # 역순이 아닌 경우 a.popleft() # 가장 왼쪽 요소 삭제 else: # 역순인 경우 a.pop() # 가장 왼쪽 요소 삭제(정순일 때의 가장 오른쪽) if not flag: print("error")..

날짜 : 2023. 03. 30 사용 언어 : python 문제 코드 import sys from collections import deque n, m = map(int, sys.stdin.readline().split()) # 가로, 세로 graph = list() visited = [[False] * n for _ in range(m)] dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] def bfs(a, b, team): cnt = 1 q = deque() q.append([a, b]) while q: r, c = q.popleft() for i in range(4): x = r + dx[i] y = c + dy[i] if x in range(m) and y in range(n):..

날짜 : 2023. 03. 29 사용 언어 : python 문제 코드 import sys n = int(sys.stdin.readline()) def hanoi(x, y, z, cnt): # start, via, end, 최대 원판의 수 if cnt == 0: return hanoi(x, z, y, cnt - 1) # start -> via 이동, end 활용 // cnt 위의 원판들 이동 print(x, z) # 맨 밑의 원판 이동(cnt) hanoi(y, x, z, cnt - 1) # via -> end 이동, start 활용 // cnt 위의 원판들 이동 print(2**n - 1) if n

날짜 : 2023. 03. 28 사용 언어 : python 문제 코드 import sys n, m = map(int, sys.stdin.readline().split()) # 집의 개수, edge의 개수 parent = [i for i in range(n + 1)] edges = [] def parent_find(parent, x): if parent[x] != x: parent[x] = parent_find(parent, parent[x]) return parent[x] def parent_union(parent, a, b): a = parent_find(parent, a) b = parent_find(parent, b) if a < b: # 부모 : 번호가 더 작은 노드 parent[b] = a el..

날짜 : 2023. 03. 27 사용 언어 : python 문제 코드 import sys v, e = map(int, sys.stdin.readline().split()) # 정점의 개수, 간선의 개수 parent = [i for i in range(v + 1)] # 각 노드의 부모 edges = [] # find 연산(parent 최신화) def parent_find(parent, x): if parent[x] != x: # 본인노드 부모가 자신이 아니라면 parent[x] = parent_find(parent, parent[x]) # 최신화 return parent[x] def parent_union(parent, a, b): a = parent_find(parent, a) b = parent_fin..