본문 바로가기

algorithm88

[Sorting] 정렬 알고리즘 정리 + 선택/삽입/퀵/계수 정렬 정렬이란 ? 정렬(Sorting)이란 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 말한다. 정렬 알고리즘으로 데이터를 정렬하면 다음 장에서 배울 이진 탐색(Binary Search)이 가능해진다. (정렬 알고리즘은 이진 탐색의 전처리 과정) ⇒ 선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬만 다룰 예정 선택 정렬(Selection Sort) 알고리즘 array = [7,5,9,0,3,1,6,2,4,8] for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i+1,len(array)): if array[min_index] > array[j]: min_index=j # 스와프(Swap)란 특정한 리스트가 주어졌을 때 두 변.. 2023. 2. 21.
[백준 14503번] 로봇 청소기 import sys input = sys.stdin.readline from collections import deque #방의 크기 세로(n), 가로(m) n, m = map(int,input().split()) # 칸의 좌표(r,c), 방향(d) r, c, d = map(int,input().split()) # 영역 초기화 area = [[0]*m for _ in range(n)] # 방문 여부 확인 리스트 # visited = [[False]*m for _ in range(n)] count = 0 for i in range(n): area[i] = list(map(int,input().split())) def dfs(x,y,d): global count nx = [0]*4 ny = [0]*4 if .. 2023. 2. 17.
[백준 7569번] 토마토(시즌 2) import sys input = sys.stdin.readline from collections import deque # 가로(m), 세로(n), 높이(h) m, n, h = map(int,input().split()) # 3차원 리스트 선언 및 초기화 area = [[[0]*m for _ in range(n)] for _ in range(h)] # 3차원 리스트 입력받기 for i in range(h): for j in range(n): area[i][j] = list(map(int,input().split())) # 값이 1인 인덱스(높이,세로,가로)배열 one_list = [] # 값이 0인 인덱스(높이,세로,가로)배열 zero_list = [] # 3차원 리스트에서 값이 1인 인덱스와 값이 0.. 2023. 2. 16.
[백준 1987번] 알파벳 (파이썬 시간초과 해결) import sys input = sys.stdin.readline sys.setrecursionlimit(10**5) from collections import deque # 세로와 가로 칸 개수 r, c = map(int,input().split()) # 지나갔던 알파벳 정보 배열 alpha = [0]*26 result = 0 count_list = [[1]*c for _ in range(r)] visited = [[False]*c for _ in range(r)] area = [[0]*c for _ in range(r)] for i in range(r): area[i] = (list(input())) def dfs(x,y): global result if x = r or y < 0.. 2023. 2. 16.
[백준 2468번] 안전 영역 from collections import deque # 2차원 배열의 행과 열 개수 n = int(input()) # 지역 높이 정보(2차원 배열) area = [] visited = [[False]*n for _ in range(n)] count_list = [] solution = 0 for _ in range(n): area.append(list(map(int,input().split()))) max_value = max(map(max,area)) def bfs(x,y,value): if visited[x][y] or (area[x][y]-value) = 0 and temp_x = 0 and temp_y < n: if (area[temp_x][temp_y] - valu.. 2023. 2. 15.
[백준 2644번] 촌 수 계산 from collections import deque # 전체 사람 수(n) n = int(input()) # 촌수를 계산해야 하는 두 사람 target_a, target_b = map(int,input().split()) # 부모 자식들 간의 관계의 개수 m = int(input()) # 전체 사람의 부자 관계를 나타내는 2차원 리스트 graph = [[] for _ in range(n+1)] # 확인 여부 확인용 리스트 visited = [False] * (n+1) # 친척 관계를 저장하는 리스트 relation = [0]*(n+1) relation[target_a] = 0 for _ in range(m): x, y = map(int,input().split()) graph[x].append(y) g.. 2023. 2. 15.