파이썬 144

[백준] 14500 테트로미노 python

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net import sys; input = sys.stdin.readline def sum_arr(array): ret = 0 for i in range(N): for j in range(M): ret += array[i][j] return ret def backtrack(arr, total=0, ind=0): global max_val if ind == 3: if max_val < total: max_..

STUDY/Algorithm 2021.05.18

[백준] 1261 알고스팟 python

https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque M, N = map(int, input().rstrip().split()) matrix = [list(map(int, list(input().rstrip()))) for _ in range(N)] visit = [[M + N] * M for _ in ra..

STUDY/Algorithm 2021.05.18

[백준] 1285 동전 뒤집기 python(pypy)

https://www.acmicpc.net/problem/1285 1285번: 동전 뒤집기 첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전의 상태가 왼쪽부터 차례대로 주어지는데, 앞면이 위 www.acmicpc.net import sys; input = sys.stdin.readline n = int(input()) coin = [[False] * n for _ in range(n)] cnt = 401 # 최대값이 20*20 /2 인데 그냥 계산하기 편하게 400 + 1 # head: 0, tail: 1 for i in range(n): tmp = input() for j in range(n): if tmp..

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

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

[프로그래머스] 로또의 최고 순위와 최저 순위 python, 2021 Dev-Matching: 웹 백엔드 개발자(상반기)

programmers.co.kr/learn/courses/30/lessons/77484?language=python3 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr def solution(lottos, win_nums): win_nums_set = set(win_nums) lottos_set = set(lottos) correct = win_nums_set & lottos_set incorrect = win_nums_set - lottos_set zero_cou..

STUDY/Algorithm 2021.05.04

[프로그래머스] 행렬 테두리 회전하기 python, 2021 Dev-Matching: 웹 백엔드 개발자(상반기)

programmers.co.kr/learn/courses/30/lessons/77485?language=python3 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr def solution(rows, columns, queries): answer = [] min_val = rows * columns matrix = [] old_val = 0 for r in range(rows): tmp = list(range(old_val + 1, old_val + columns + 1)) old_val +..

STUDY/Algorithm 2021.05.04