백준 153

[백준] 17144 미세먼지 안녕! python

https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net import sys; input = sys.stdin.readline R, C, T = map(int, input().split()) room = [] fresher = [] for i in range(R): tmp = list(map(int, input().split())) room.append(tmp) if not fresher: for j in range(C): if tmp[j] == -1..

STUDY/Algorithm 2021.05.18

[백준] 2263 트리의 순회 python

www.acmicpc.net/problem/2263 2263번: 트리의 순회 첫째 줄에 n(1≤n≤100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다. www.acmicpc.net import sys; input = sys.stdin.readline n = int(input()) inorder = list(map(int, input().split())) postorder = list(map(int, input().split())) preorder = [] def order(inorder, postorder): if postorder == inorder: return reversed(postorder) ret = [post..

STUDY/Algorithm 2021.05.09

[백준] 1991 트리순회 python

www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자 www.acmicpc.net import sys; input = sys.stdin.readline n = int(input()) ldic, rdic = dict(), dict() for _ in range(n): p, ls, rs = input().split() ldic[p] = ls rdic[p] = rs def pre(node='A'): global answer if node == '.': return answer += node ..

STUDY/Algorithm 2021.05.09

[백준] 1967 트리의 지름 python

www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque def bfs(start): q = deque([start]) visit = [-1] * (n + 1) visit[start[0]] = 0 ret = (0, 0) while q: cur, dist = q.popleft() for adj, adj_w in link_list..

STUDY/Algorithm 2021.05.09

[백준] 1918 후위 표기식 python

www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식 www.acmicpc.net import sys; input = sys.stdin.readline ans = '' s = [] for ch in input().rstrip(): if ch == '+' or ch == '-': while s: if s[-1] == '(': break ans += s.pop() s.append(ch) elif ch == '*' or ch == '/': while s: if s[-1] == '(' or..

STUDY/Algorithm 2021.05.09

[백준] 1629 곱셈 python

www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net # 분할정복 import sys; input = sys.stdin.readline a, b, c = map(int, input().split()) def divNconq(a, b, c): if b == 1: return a % c tmp_a = divNconq(a, b // 2, c) return a * tmp_a * tmp_a % c if b & 1 else tmp_a * tmp_a % c print(divNconq(a,b,c)) 분할정복문제이다 dp방식으로 해보려했으나 메..

STUDY/Algorithm 2021.05.08

[백준] 1167 트리의 지름 python

www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque V = int(input()) G = [list() for _ in range(V + 1)] for _ in range(V): node = 0 tmp_list = list(map(int, input().split())) for i in range(1, len(tmp_list..

STUDY/Algorithm 2021.05.08

[백준] 1074 Z python

www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서 www.acmicpc.net N, r, c = map(int, input().split()) def z(N, r, c): result = 0 while N > 0: if N == 1: result += r * 2 + c break else: flag = 4 ** (N - 1) half = (2 ** N) >> 1 N -= 1 if r < half and c < half: continue elif r < half: result += ..

STUDY/Algorithm 2021.05.04

[백준] 11723 집합 C

www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include #include int main() { int arr[21] = { 0 }; int T, num; char command[7]; scanf("%d", &T); for (int i = 0; i < T; i++) { scanf("%s", command); scanf("%d", &num); //printf("%s %d\n", command, num); if (strstr(comm..

STUDY/Algorithm 2021.05.04

[백준] 11279 최대힙 python

www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net import sys;input = sys.stdin.readline from heapq import heappop, heappush h = [] for i in range(int(input())): x = int(input()) if x: heappush(h, -x) else: print(-heappop(h) if h else 0) heapq는 기본이 minheap 이기때문에 마이너스 기호를..

STUDY/Algorithm 2021.05.04