Python 234

[백준 1920번] 수 찾기

import sys input = sys.stdin.readline n = int(input()) # List의 in은 평균 시간복잡도가 O(N)이고, Set의 in은 평균 시간복잡도가 O(1)이다 # (Set은 해쉬 테이블을 사용하기 때문) set_n = set(map(int,input().split())) m = int(input()) array_m = list(map(int,input().split())) for i in array_m: if i in set_n: print(1) else: print(0) 이번 문제는 이진 탐색을 사용하지 않고 풀이하려고 했었는데, n개의 데이터가 들어있는 리스트(List)로 저장하고 in 연산자를 사용하니 시간초과가 발생했다. 따라서 이를 해결하기 위해 in 연산..

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

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

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

Algorithm/DFS 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

[백준 10026번] 적록색약

from collections import deque n = int(input()) # 영역(2차원 리스트) area = [] # 적록색약이 아닌 사람의 구역의 수 count_a = 0 # 적록색약인 사람의 구역의 수 count_b = 0 for _ in range(n): area.append(list(input())) # 적록색약 X 방문 여부 2차원 리스트 visited_a = [[False]*n for _ in range(n)] # 적록색약 O 방문 여부 2차원 리스트 visited_b = [[False]*n for _ in range(n)] # 적록색약 X BFS함수 def bfs_a(x,y): if visited_a[x][y]: return False visited_a[x][y] = True q..

Algorithm/BFS 2023.02.14

[백준 7576번] 토마토

from collections import deque # 가로(m), 세로(n) m, n = map(int,input().split()) # 토마토가 담긴 상자(2차원 리스트) area = [] # 토마토가 존재하는 위치를 담는 리스트 exist_list = [] # 토마도가 모두 익는 최소 일수(정답) result = 0 # BFS 함수 def bfs(list): global result queue = deque(list) # 익을 수 있는 토마토가 다 익었을 때, 마지막 구역에 저장된 값 depth = 0 while queue: v = queue.popleft() nx = [-1,1,0,0] ny = [0,0,-1,1] for i in range(4): temp_x = v[0] + nx[i] temp..

Algorithm/BFS 2023.02.14