본문 바로가기

백준18

[백준 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.
[백준 4963번] 섬의 개수 count_list = [] def dfs(x,y,area,visited): if area[x][y] == 0 or visited[x][y]: return False visited[x][y] = True nx = [-1,1,-0,0,-1,-1,1,1] ny = [0,0,-1,1,-1,1,-1,1] for i in range(8): temp_x = x + nx[i] temp_y = y + ny[i] if temp_x >=0 and temp_x = 0 and temp_y < m: if not visited[temp_x][temp_y] and area[temp_x][temp_y] == 1: dfs(temp_x,temp_y,area,visited) return True while T.. 2023. 2. 15.
[백준 11724번] 연결 요소의 개수 n, m = map(int,input().split()) count = 0 graph = [[] for _ in range(n+1)] visited = [False]*(n+1) for _ in range(m): x, y = map(int,input().split()) graph[x].append(y) graph[y].append(x) def dfs(graph,v,visited): if visited[v]: return False visited[v] = True for i in graph[v]: if not visited[i]: dfs(graph,i,visited) return True for i in range(1,n+1): if dfs(graph,i,visited): count += 1 print(co.. 2023. 2. 15.
[백준 2178번] 미로 탐색 from collections import deque n,m = map(int,input().split()) # n x m 크기의 미로 maze = [] # 방문 여부 확인용 2차원 배열 visited = [[False]*m for _ in range(n)] # 미로 입력받고 저장 for _ in range(n): maze.append(list(map(int,input()))) # bfs 함수 def bfs(x,y): # 방문 처리 visited[x][y] = True # queue 자료구조 선언 queue = deque([(x,y)]) while queue: v = queue.popleft() vx = v[0] vy = v[1] nx = [-1,1,0,0] ny = [0,0,-1,1] # 상-하-좌-우.. 2023. 2. 12.
[백준 2217번] 로프 n = int(input()) solution = 0 weight_list = [] for i in range(n): weight_list.append(int(input())) weight_list.sort() list_len = len(weight_list) for i in range(list_len): temp = (list_len-i)*weight_list[i] if temp > solution: solution = temp print(solution) 이번 문제는 로프의 개수를 임의로 정하여 로프가 버틸 수 있는 최대 중량을 구하는 문제이다. 이 문제의 핵심은 로프들을 사용하여 각 로프가 w/k 만큼의 중량이 걸리게 된다면, 아무리 평균이 높더라도 결국 (각 로프 중량의 최소 값 * 나머지 로프의.. 2023. 2. 9.