본문 바로가기

728x90
반응형

전체 글

(131)
[백준 / 1159] 농구 경기 - Python https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net 입력을 받은 성의 첫 글자를 딕셔너리의 키로 정하고, 해당 글자의 개수를 세어준다. 5글자가 넘으면 저장하여, 저장된 문자가 있으면 문자들을 출력하고, 없으면 'PREDAJA'를 출력한다. N = int(input()) names = {} for _ in range(N): name = input() 총 성의 개수 N을 입력받는다. names는 각 성의 첫 글자를 key로 한 글자의 개수를 세어주기 위해 ..
[백준 / 1120] 문자열 - Python 앞뒤로 원하는 문자를 추가할 수 있다는 것은 추가된 문자는 무조건 차이가 없다는 것이다. 즉 A문자열을 B에 비교하면서 차이가 없는 위치를 찾아 그 차이를 출력하면 된다. A, B = map(str, input().split()) str_gap = len(B)-len(A) min_gap = len(A) 문자열 A와 B를 입력받고 두 문자열 길이의 차이를 str_gap에 넣고, 정답을 담을 변수를 min_gap으로 선언하고 len(A)로 초기화 한다. 왜냐하면 A와 B의 차이는 아무리 커야 A이기 때문이다. for i in range(str_gap+1): dif = difOf(A, B[i:i+len(A)]) if dif < min_gap: min_gap = dif print(min_gap) 만약 문자열이 ..
[백준 / 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(..

728x90
반응형