본문 바로가기

728x90
반응형

# Coding

(78)
[백준 / 1076] 저항 - Python 해당 문제에서 저항은 색 3개를 이용해서 구한다. 처음 색 2개는 저항의 값이고, 마지막 하나는 곱해야 하는 값이다. 즉, 처음 색은 10의 자리, 두번째 색은 1의 자리이고, 3번째 수의 곱 값을 곱해주면 된다. yellow, violet, red이면 '(4 * 10 + 7) * 100'이 된다. color1 = input() color2 = input() color3 = input() color_table = { 'black': [0, 1], 'brown': [1, 10], 'red': [2, 100], 'orange': [3, 1000], 'yellow': [4, 10000], 'green': [5, 100000], 'blue': [6, 1000000], 'violet': [7, 10000000],..
[백준 / 1068] 트리 - Python 입력받은 트리의 구조를 그린다. 부모 -> 자식으로의 방향이 있는 그래프이다. 지워야 하는 노드를 입력받고, 해당 노드에 연결된 자식 노드를 삭제한다. 만약 해당 자식 노드에 연결된 노드가 없으면 그냥 지우고, 자식 노드가 있을 경우 같은 방법을 반복한다. 아래와 같은 예제에서 틀릴 수 있으니 주의 2 -1 0 1 N = int(input()) node = list(map(int, input().split())) tree = {i: [] for i in range(N)} 총노드의 개수 N과 각 노드의 부모가 입력되는 node를 입력받는다. 만약 '-1 0 0 1 1'이 입력된다면 0 노드는 최상위 노드, 1, 2번 노드는 0번 노드의 자식이고, 3, 4번 노드는 1번 노드의 자식인 것이다. tree는 해..
[백준 / 1005] ACM Craft - Python 시간 초과로 애를 많이 먹은 문제다.. 나의 풀이는 다익스트라(Dijkstra) 알고리즘을 응용하여 풀었으므로 해당 알고리즘을 선행해야 한다. 2021.03.18 - [# Coding/# Algorithm] - [보기 쉬운 Algorithm] 다익스트라(Dijkstra) 알고리즘 - Python [보기 쉬운 Algorithm] 다익스트라(Dijkstra) 알고리즘 - Python '다익스트라(Dijkstra) 알고리즘'은 비용(가중치) 간선이 있는 노드 그래프의 최단 거리를 구하는 알고리즘 시간을 줄이기 위해서 파이썬 모듈 중 최소 힙을 구현할 수 있는 heapq를 사용한다. ↳ list joinmycode.tistory.com 그래프를 입력받은 후 방향을 입력받은 x -> y가 아닌 y -> x로 그려..
[백준 / 2644] 촌수계산 - Python 해당 문제는 다익스트라(Dijkstra) 알고리즘을 응용하여 풀었으므로 해당 알고리즘에 대한 설명은 아래 링크에서 확인하면 된다. 2021.03.18 - [# Coding/# Algorithm] - [보기 쉬운 Algorithm] 다익스트라(Dijkstra) 알고리즘 - Python [보기 쉬운 Algorithm] 다익스트라(Dijkstra) 알고리즘 - Python '다익스트라(Dijkstra) 알고리즘'은 비용(가중치) 간선이 있는 노드 그래프의 최단 거리를 구하는 알고리즘 시간을 줄이기 위해서 파이썬 모듈 중 최소 힙을 구현할 수 있는 heapq를 사용한다. ↳ list joinmycode.tistory.com 그래프를 먼저 입력받아 양방향 그래프를 작성한 후 모든 거리(가중치)를 1로 계산하여 다..
[보기 쉬운 Algorithm] 깊이 우선 탐색(DFS) - Python 깊이 우선 탐색(Depth First Search)은 연결된 노드를 연속적으로 쫓아서 차례대로 탐색하는 알고리즘이다. 예를 들어 위와 같은 경우 'A'에서 탐색을 시작하면 'A'와 연결된 'B', 'D', 'F'를 먼저 찾고, 다음 'B'와 연결된 'C', 'C'와 연결된 'E'를 차례대로 탐색 후, 'D'와 연결된 'G', 다음 'F'를 찾는 것이다. 따라서 순서는 ['A', 'B', 'C', 'E', 'D', 'G', 'F']가 된다. def dfs(graph, start_node): visit = [] stack = [] stack.append(start_node) while stack: node = stack.pop(0) if node not in visit: visit.append(node) s..
[보기 쉬운 Algorithm] 너비 우선 탐색(BFS) - Python 너비 우선 탐색(Breadth First Search)은 연결된 노드를 연속적으로 쫓아서 찾는 것이 아닌 연결된 노드들을 모두 탐색한 후 그다음 연결 노드를 탐색한다. 예를 들어 위와 같은 경우 'A'에서 탐색을 시작하면 'A'와 연결된 'B', 'D', 'F'를 먼저 찾고, 다음 'B'와 연결된 'C', D와 연결된 'G', 'C'와 연결된 'E'를 찾는 것이다. 따라서 순서는 ['A', 'B', 'D', 'F', 'C', 'G', 'E']가 된다. def bfs(graph, start_node): visit = [] queue = [] queue.append(start_node) while queue: node = queue.pop(0) if node not in visit: visit.append(..
[백준 / 1012] 유기농 배추 - Python 입력받은 모든 그래프를 돌면서 1이 있는 처음 좌표를 중심으로 모든 인접한 1을 2로 만드는 함수를 호출한다. 이러한 과정을 반복하며 함수가 몇 번 호출됐는지를 count 해서 출력한다. for _ in range(int(input())): M, N, K = map(int, input().split()) graph = [[0 for _ in range(M)] for _ in range(N)] for _ in range(K): x, y = map(int, input().split()) graph[y][x] = 1 테스트 케이스를 입력 받아 그 수만큼 for문을 돌린다. 가로길이 M, 세로 길이 N, 배추의 위치 K를 입력받는다. 밭의 그래프인 N * M 크기를 그려준다. K 수만큼 입력을 받아서 해당 좌표..
[백준 / 2667] 단지번호붙이기 - Python 구현한 함수의 기능은 그래프를 입력받고, 좌표를 상하좌우 움직이면서 방문한 노드는 2로 값을 바꾸고, 방문해야 할 노드인 값이 1인 노드를 찾아서 반복한다. 함수는 2로 바꾼 좌표의 개수를 반환한다. 그래프의 모든 노드를 돌면서 값이 1인 좌표를 함수에 넣는다. 함수가 끝나면 1과 연결된 좌표는 2로 바뀌므로 바뀐 개수를 answer에 저장하고, 다른 1을 찾는다. N = int(input()) graph = [] for _ in range(N): graph.append(list(map(int, input()))) 첫 째줄에 지도의 크기 N을 입력받고, 다음 입력에서는 이중 리스트로 그래프를 입력받는다. answer = [] for x in range(N): for y in range(N): if gra..

728x90
반응형