알고리즘(Python)(10)
-
[백준] 2606. 바이러스
1번 컴퓨터를 통해 바이러스에 걸리는 컴퓨터의 수를 구하는 문제로 다시 해석하면 1번과 직, 간접적으로 연결된 컴퓨터를 탐색해 그 수를 출력하는 문제다. bfs, dfs 중 아무거나 사용해도 되겠지만 이번에는 bfs를 사용했다. from collections import deque from sys import stdin def bfs(start_node): global count q = deque() q.append(start_node) visited[start_node] = True while q: v = q.popleft() for n in graph[v]: if not visited[n]: q.append(n) visited[n] = True count += 1 num_of_com = int(std..
2022.04.15 -
[백준] 2010. 플러그
from sys import stdin n = int(input()) concentList = [] for i in range(n): concentList.append(int(stdin.readline().rstrip())); print(sum(concentList) - (n-1)) 34908 kb 284 ms 개선된 코드 (메모리 16%증가, 처리속도 50%감소) from sys import stdin n = int(input()) concentList = list(map(int,stdin.read().split())) print(sum(concentList) - (n-1)) 40468 kb 132 ms 추측할 수 있는 내용 1. for문이나 append를 했을 때 처리하는 속도가 늘어난다. 2. ma..
2022.04.10 -
[백준] 1296. 팀 이름 정하기
name = input() numOfTeam = int(input()) teamList = [] probList = [] teamIndex = 0 maxPorb = 0; for i in range(numOfTeam): teamList.append(input()) L = name.count("L") + str(teamList[i]).count("L") O = name.count("O") + str(teamList[i]).count("O") V = name.count("V") + str(teamList[i]).count("V") E = name.count("E") + str(teamList[i]).count("E") num = ((L+O) * (L+V) * (L+E) * (O+V) * (O+E) * (V+E..
2022.04.08 -
[백준] 1260. DFS와 BFS
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 개요 이번 내용은 dfs, bfs이다. 풀이 코드 from collections import deque import queue import sys input = sys.stdin.readline def bfs(v): global bfsAnswer bVisited[v] = True bfsAnswer += f"{v} " queue = deque() queue.ap..
2022.04.07