분류 전체보기
-
[Python][C++] 9019번 DSLRAlgorithm/Baekjoon 2024. 8. 21. 13:33
문제https://www.acmicpc.net/problem/9019 코드1. Pythonfrom collections import deque# 각 명령어의 동작을 정의하는 함수들def D(x): return (x * 2) % 10000 # D 명령어: x를 두 배로 만든 후 10000으로 나눈 나머지def S(x): return x - 1 if x > 0 else 9999 # S 명령어: x에서 1을 뺀 값, x가 0이면 9999로 설정def L(x): return (x % 1000) * 10 + x // 1000 # L 명령어: x를 왼쪽으로 회전 (십진수 자릿수 이동)def R(x): return (x % 10) * 1000 + x // 10 # R 명령어: x를 ..
-
[Python][C++]7662번 우선순위 큐Algorithm/Baekjoon 2024. 8. 19. 21:05
문제https://www.acmicpc.net/problem/7662 코드1. Pythonimport sysimport heapqinput = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용# 테스트 케이스 수만큼 반복for _ in range(int(input())): min_heap = [] # 최소 힙 (최소값을 빠르게 꺼내기 위함) max_heap = [] # 최대 힙 (최대값을 빠르게 꺼내기 위함, 음수로 저장하여 사용) visited = {} # 각 숫자가 힙에 몇 번 들어갔는지 추적하기 위한 딕셔너리 # 각 테스트 케이스의 명령어 수만큼 반복 for _ in range(int(input())): ..
-
[Python][C++] 7576번 토마토Algorithm/Baekjoon 2024. 8. 18. 01:09
문제https://www.acmicpc.net/problem/7576 코드1. Pythonfrom collections import deque# m과 n을 입력받음 (m: 가로 길이, n: 세로 길이)m, n = map(int, input().split())# 보드 초기화board = []# 보드 상태를 입력받아 2차원 리스트로 저장for _ in range(n): board.append(list(map(int, input().split())))# 방향 벡터 설정 (상, 하, 좌, 우)dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]# BFS를 위한 큐 초기화q = deque()# 익은 토마토(값이 1인 칸)의 위치를 모두 큐에 추가for i in range(n): for ..
-
[Python][C++] 7569번 토마토Algorithm/Baekjoon 2024. 8. 16. 22:58
문제https://www.acmicpc.net/problem/7569 코드1. Pythonfrom collections import deque# 보드와 방문 여부를 저장하는 배열 초기화board = [[[0 for _ in range(100)] for _ in range(100)] for _ in range(100)]visited = [[[0 for _ in range(100)] for _ in range(100)] for _ in range(100)]def bfs(n, m, h): # 방향벡터 설정 (6방향) dx = [-1, 1, 0, 0, 0, 0] dy = [0, 0, -1, 1, 0, 0] dz = [0, 0, 0, 0, -1, 1] q = deque() # 익..
-
[Python][C++] 5525번 IOIOIAlgorithm/Baekjoon 2024. 8. 14. 21:43
문제https://www.acmicpc.net/problem/5525 코드1. Python# 입력 받기n = int(input())m = int(input())s = input()cnt = 0 # 패턴이 나타나는 횟수를 저장할 변수i = 0 # 현재 문자열의 인덱스# 문자열을 순회하면서 패턴을 찾기 위한 반복문while i = n: cnt += k - n + 1 # 가능한 패턴의 시작점 수만큼 카운트를 증가시킴 else: i += 1 # "IOI" 패턴이 아닐 경우 다음 인덱스로 이동# 최종적으로 패턴이 몇 번 나타났는지 출력print(cnt) 2. C++#include #include using namespace std;int main() { int ..
-
[Database] 인덱스Computer Science/Database 2024. 8. 12. 20:47
인덱스데이터를 빠르게 찾을 수 있는 하나의 장치모든 요소에 접근할 수 있는 균형 잡힌 트리 구조와 트리 깊이의 대수 확장성으로 효율적임대수확장성: 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것 B-트리인덱스는 보통 B-트리라는 자료구조로 이루어져 있음루트 노드, 리프 노드, 브랜치 노드로 나뉨 인덱스 만드는 방법MySQL클러스터형 인덱스 와 세컨더리 인덱스 로 나뉨클러스터형 인덱스 : 레코드들의 물리적인 저장 순서가 인덱스 순서와 동일하게 되도록 구성된 인덱스인덱스의 리프 노드가 곧 데이터 레코드인덱스 자체에 데이터가 포함됨사전과 유사보조 인덱스보다 검색 속도 빠름동일하거나 인접한 키 값 가진 레코드들은 물리적으로도 인접하게 저장되어 성능 향상데이터의 입력/수정/삭제는 더 느림테이블당 하나..
-
[Python][C++] 5430번 ACAlgorithm/Baekjoon 2024. 8. 11. 16:11
문제https://www.acmicpc.net/problem/5430 코드1. Pythonimport sysfrom collections import dequeinput = sys.stdin.readlinefor _ in range(int(input())): try: s = input().rstrip() n = int(input()) idx = 1 # 배열의 순서를 관리하는 변수 (1이면 정방향, -1이면 역방향) nums = deque(input()[1:-2].split(',')) if nums[0] == '': # 만약 배열이 비어있는 경우 처리 (빈 배열의 경우) nums.p..
-
[Python][C++] 2805번 나무 자르기Algorithm/Baekjoon 2024. 8. 10. 22:30
문제https://www.acmicpc.net/problem/2805 코드1. Pythonn, m = map(int, input().split())trees = list(map(int, input().split()))start = 1 # 절단기 높이의 최소값end = max(trees) # 절단기 높이의 최대값 (가장 높은 나무의 높이)# 이분 탐색 시작while start mid: # 나무가 절단기 높이보다 크면 sum_wood += tree - mid # 잘려진 나무의 길이를 sum_wood에 더함 # 얻을 수 있는 나무의 총합이 필요한 나무의 길이 m 이상이면 if sum_wood >= m: start = mid + 1 # 절단기 높이를 더 높..