Baekjoon 150

[백준 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 ..

Algorithm/DFS 2023.02.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.02.16

[백준 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..

Algorithm/BFS 2023.02.15

[백준 2667번] 단지번호붙이기

n = int(input()) # 2차원 배열 지도 arr = [] # 방문 여부 확인용 2차원 배열 visited =[[False]*n for _ in range(n)] # 단지 내 가구 수 count = 0 # 단지 내 가구 수 리스트 count_list = [] for i in range(n): arr.append(list(map(int,list(input())))) # dfs 함수 def dfs(x,y): global count # 집이 존재한지 / 방문한 적 있는지 여부 확인 if arr[x][y] == 1 and not visited[x][y]: # 방문 처리 visited[x][y] = True # 단지 내 가구 수 증가 count += 1 # 상-하-좌-우로 이동하기 위한 값 nx = [-..

Algorithm/DFS 2023.02.13

[백준 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] # 상-하-좌-우..

Algorithm/BFS 2023.02.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 만큼의 중량이 걸리게 된다면, 아무리 평균이 높더라도 결국 (각 로프 중량의 최소 값 * 나머지 로프의..

Algorithm/Greedy 2023.02.09